Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документ Microsoft Office Word (5).docx
Скачиваний:
1
Добавлен:
11.09.2019
Размер:
69.8 Кб
Скачать

Сортировка посредством выбора

Идея сортировки с помощью выбора не сложнее двух предыдущих. На j-ом этапе выбирается элемент наименьший среди M[j]M[j+1],. . ., M[N](см. процедуру FindMin) и меняется местами с элементом M[j]. В результате после j-го этапа все элементы M[j],M[j+1],. . ., M[N]будут упорядочены.

Сказанное можно описать следующим образом:

нц для j от 1 до N-1     выбрать среди M[j],. . ., M[N] наименьший элемент и     поменять его местами с M[j] кц

Более точно:

begin    for j:=1 to N-1 do     begin          FindMin(j, i);         swap(M[j],M[i])     end  end;

В программе, как уже было сказано, используется процедура FindMin, вычисляющая индекс lowindex элемента, наименьшего среди элементов массива с индексами не меньше, чем startindex:

procedure FindMin(startindex: integer;           var lowindex: integer);    var lowelem: ...;        u: integer;  begin    lowindex := startindex;    lowelem := M[startindex];    for u:=startindex+1 to N do      if M[u] < lowelem then         begin           lowelem := M[u];           lowindex := u         end  end;

Индексный массив (в некоторых языках программирования также таблицаряд) — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (в отличие от списка).

Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

В ряде скриптовых языков, например JavaScript, PHP, Ruby применяются также ассоциативные массивы, в которых переменные не обязаны быть однотипными, и доступ к ним не обязательно осуществляется по индексу.

Общее описание

Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Пример статического массива на языке Паскаль

{Одномерный массив целых чисел.

Нумерация элементов от 1 до 15}

a: array [1..15] of Integer;

{Двумерный массив символов.

Нумерация по столбцам по типу Byte (от 0 до 255)

по строкам от 1 до 5}

multiArray : array [Byte, 1..5] of Char;

{Одномерный массив из строк.

Нумерация по типу word (от 0 до 65536)}

rangeArray : array [Word] of String;

Пример статического массива на С/С++

int Array[10]; // Одномерный массив целых чисел размера 10

// Нумерация элементов от 0 до 9

double Array[12][15]; // Двумерный массив вещественных чисел двойной точности

// размера 12 на 15.

// Нумерация по столбцам от 0 то 11, по строкам от 0 до 14

Поддержка индексных массивов (свой синтаксис объявления, функции для работы с элементами и т. д.) есть в большинстве высокоуровневых языков программирования. Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования и/или конкретным транслятором.

В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).

Объявление типа «массив» в языке Паскаль

type

TArrayType = array [0..9] of Integer; (* Объявления типа "массив" *)

var

arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)