Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2009 лекции ПЯВУ часть1.doc
Скачиваний:
22
Добавлен:
27.03.2015
Размер:
823.3 Кб
Скачать

Тема 4 Массивы

4.1.Определение, объявление и инициализация массивов

Массив– это последовательная группа ячеек памяти, имеющих одинаковое имя и одинаковый тип.

На любой элемент массива можно сослаться, указывая имя массива и номер позиции элемента, заключенный в квадратные скобки. Первый элемент каждого массива – нулевой. Номер позиции, указанный в квадратных скобках, называют индексом. Индекс должен быть целым числом или целым выражением. Если программа использует выражение в качестве индекса, то выражение вычисляется с целью определения индекса.

Важно понимать различие между «седьмым элементом массива» и «элементом массива семь». Седьмой элемент массива имеет индекс 6, тогда как элемент массива семь имеет индекс7.

Чтобы разделить значение седьмого элемента массива arrна2и записать результат в переменнуюх, надо записать:

x = arr[6] / 2;

Объявления и инициализация массивов в программе

Массивы занимают область в памяти. Программист указывает тип каждого элемента, количество элементов, требуемое каждым массивом, и компилятор может зарезервировать соответствующий объем памяти.

int c[12];

int b[100], x[27];

Элементам массива должны быть заданы какие-то начальные значения:

int n[10];

for (int i = 0; i<10; i++)

n[i] = 0;

Элементам массива можно присваивать начальные значения (инициализировать их) в объявлении массива с помощью следующего за объявлением списка, заключенного в фигурные скобки:

int n[5] = {5,4,3,2};

Если начальных значений меньше, чем элементов в массиве, оставшиеся элементы автоматически получают нулевые значения.

Если размер массива не указан в объявлении со списком инициализации, то количество элементов массива будет равно количеству элементов в списке начальных значений:

int n[ ] = {5,4,3,2,1};

const int arraySize = 10;

int s[arraySize];

В объявлении массивов при указании размера массива можно использовать только константы.

Символьному массиву можно также задать в качестве начального значения список отдельных символьных констант, указанных в списке инициализации. Например,

char string1 [ ] = “first”;

char string2 [ ] ={‘f’, ‘i’, ‘r’, ‘s’, ‘t’, ‘\0’}

Эти объявления эквивалентны. Оба массива содержат шестьсимволов, потому что последним символом в строке всегда является нулевой символ – признак завершения строки.

4.2. Сортировка массивов Пузырьковая сортировка

Задача.В программе задан массив из 10 элементов. Необходимо отсортировать его по возрастанию и вывести отсортированный массив на экран. Использовать пузырьковую сортировку (см. рис. 4.1.).

Данная сортировка получила название пузырьковая сортировка[5] или сортировка погружением, потому что наименьшее значение постепенно «всплывает», продвигаясь к вершине (началу) массива, подобно пузырьку воздуха в воде, тогда как наибольшее значение погружается на дно (конец массива).

int main(){

const int arraySize = 10;

int a[arraySize] = {2,6,4,8,10,12,89,68,45,37};

int hold;

cout << "In natural order" << endl;

for (int i = 0; i< arraySize; i ++)

cout << a[i] << "\t";

cout << endl;

//Bubbble-sort***************************************

for( int pass = arraySize-1; pass >0; pass --)

for (i = 0; i < pass; i++)

if (a[i] > a[i+1]){

hold = a[i];

a[i] = a[i+1];

a[i+1] = hold; }

//**************************************************

cout << "In right order" << endl;

for (i = 0; i< arraySize; i ++)

cout << a[i] << "\t";

cout << endl;}

Рис. 4.1. Программа, иллюстрирующая работу пузырьковой сортировки

Сортировка осуществляется с помощью вложенного цикла for. Перестановка выполняется тремя присваиваниями, с помощью переменнойhold. Двумя присваиваниями сортировку выполнить нельзя, потому что после первого присваивания одно из значений будет утеряно, и обе переменные будут иметь одинаковое значение.