Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
konspekt_1_semestr.doc
Скачиваний:
11
Добавлен:
02.08.2019
Размер:
654.34 Кб
Скачать

Массивы

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

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

Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):

тип_элементов имя_массива[размерность]

float а [10]; // описание массива из 10 вещественных чисел

Внимание

При описании массивов квадратные скобки являются элементом синтаксиса, а не указанием на необязательность конструкции.

Элементы массива нумеруются с нуля.

Можно инициализировать массив при описании

Правила инициализации

1-Инициализирующие значения для массивов записываются в фигурных скобках и разграничиваются запятыми.

2- Значения элементам присваиваются по порядку, начиная с нулевого.

3- Количество значений д.б. не более размерности

4. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:

int b[5] = {3, 2, 1}; // b[0]=3. b[l]=2. b[2]=l, b[3]=0, b[4]=0

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

Размерность массивов предпочтительнее задавать с помощью именованных констант, поскольку при таком подходе для ее изменения достаточно скорректировать значение константы всего лишь в одном месте программы.

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

Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

имя_массива[индекс]

В следующем примере подсчитывается сумма элементов массива.

#i include <iostream.h>

int main()

{

const int n = 10;

int i, sum;

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

for (i = 0, sum = 0; i<n; i++)

sum += marks[i];

cout <<"Сумма элементов: " <<sum;

return 0;

}

Обратите внимание, что последний элемент массива имеет номер, на единицу меньший заданной при его описании размерности.

ВНИМАНИЕ

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

Процесс обмена элементов массива с номерами i и imin через буферную переменную а на 1-м проходе цикла проиллюстрирован на рис. Цифры около стрелок обозначают порядок действий.

Методы сортировки массива.

Сортировка обменами. Сравниваются два соседних числа а[i] и a[i+1]. Если а[i]>a[i+1], то делается перестановка. Так продолжается до тех пор, пока все элементы не будут расположены в порядке возрастания.

Сортировка вставками. Пусть a[1],a[2],..a[i] – упорядоченная последова­тельность. Берётся следующее число a[i+1] и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс про­должается до тех пор, пока все элементы от i+1 до n не будут перебраны.

Сортировка выбором. В массиве, начиная с первого, выбирается наименьший элемент и становится на первое место, а первый – на место наименьшего. За­тем, начиная со второго, эта процедура повторяется.

Метод быстрой сортировки. В массиве выбирается элемент относительно которого ведётся сортировка, как правило это средний элемент a[k]. Сначала пе­ребираются все элементы расположенные слева от a[k], начиная с первого, до элемента большего либо равного по значению a[i]>=a[k]. После этого перебира­ются все элементы расположенные справа от a[k], начиная с последнего, до эле­мента меньшего либо равного по значению a[j]<=a[k]. Элементы a[i] и a[j] меня­ются местами. Эта процедура продолжается до тех пор, пока выполняется условие i<j. Если же это условие не выполняется то массив разбивается на два новых мас­сива и все действия повторяются до тех пор, пока новый массив содержит не ме­нее двух элементов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]