Скачать презентацию МЕТОД ПАРНЫХ ПЕРЕСТАНОВОК МЕТОД ПУЗЫРЬКА Идея алгоритма Если Скачать презентацию МЕТОД ПАРНЫХ ПЕРЕСТАНОВОК МЕТОД ПУЗЫРЬКА Идея алгоритма Если

Сортировка_массивов.pptx

  • Количество слайдов: 12

МЕТОД ПАРНЫХ ПЕРЕСТАНОВОК (МЕТОД “ПУЗЫРЬКА”) Идея алгоритма: Если два соседних элемента расположены не по МЕТОД ПАРНЫХ ПЕРЕСТАНОВОК (МЕТОД “ПУЗЫРЬКА”) Идея алгоритма: Если два соседних элемента расположены не по порядку, то меняем их местами. Так повторяем до тех пор, пока в очередном проходе не сделаем ни одного обмена, т. е. массив будет упорядоченным Пример: 5 1 2 3 4 1 5 2 3 4 1 2 5 3 4 1 2 3 5 4 1 2 3 4 5

ТЕКСТ ПРОЦЕДУРЫ НА PASCAL Arr - массив для сортировки с начальным индексом 0, n ТЕКСТ ПРОЦЕДУРЫ НА PASCAL Arr - массив для сортировки с начальным индексом 0, n - размерность массива procedure Sort. Puz (var Arr : array of Integer; n : Integer); var i : Integer; Temp : Integer; Flag : Boolean; begin repeat Flag : = False; for i : = 0 to n - 1 do if Arr [i ] > Arr [i + 1] then begin Temp : = Arr [i ]; Arr [i ] : = Arr [i + 1]; Arr [i + 1] : = Temp; Flag : = True; end; until Flag = False; end;

ТЕКСТ ПРОЦЕДУРЫ НА DELPHY procedure TForm 1. Button 1 Click(Sender: TObject); const SIZE = ТЕКСТ ПРОЦЕДУРЫ НА DELPHY procedure TForm 1. Button 1 Click(Sender: TObject); const SIZE = 5; var a: array[1. . SIZE] of integer; k: integer; // текущий элемент массива i: integer; // индекс для ввода и вывода массива changed: boolean; // TRUE, если в текущем цикле были обмены buf: integer; // буфер для обмена элементами массива begin // ввод массива for i : = 1 to SIZE do a[i] : = Str. To. Int(String. Grid 1. Cells[i - 1, 0]); label 2. caption : = '';

// сортировка массива repeat Changed : = FALSE; // пусть в текущем цикле нет // сортировка массива repeat Changed : = FALSE; // пусть в текущем цикле нет обменов for k : = l to SIZE - 1 do if a[k] > a[k + l] then begin // обменяем k-й и k+1 -й элементы buf : = a[k]; a[k] : = a[k + l]; a[k + l] : = buf; changed : = TRUE; end; // вывод массива for i : = l to SIZE do Label 2. caption : = label 2. caption + ' ' + Int. Tostr(a[i]); Label 2. caption : = label 2. caption + #13; until not changed; // если не было обменов, значит массив отсортирован Label 2. caption : = label 2. caption + #13 + 'Maccив отсортирован. '; end;

МЕТОД ПРОСТОГО ВЫБОРА Идея алгоритма: Просматривая массив от первого элемента, найти минимальный элемент и МЕТОД ПРОСТОГО ВЫБОРА Идея алгоритма: Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального. И так далее до предпоследнего элемента.

Пример Минимальный элемент Номер Исходный просмотра массива i Индекс Переставляемый элемент Значение Индекс Массив Пример Минимальный элемент Номер Исходный просмотра массива i Индекс Переставляемый элемент Значение Индекс Массив после перестано Значение вки 1 (2, 8, 1, 3, 7) 3 1 1 2 (1, 8, 2, 3, 7) 2 1, (8, 2, 3, 7) 3 2 2 8 1, (2, 8, 3, 7) 3 1, 2, (8, 3, 7) 4 3 3 8 1, 2, (3, 8, 7) 4 1, 2, 3, (8, 7) 5 7 4 8 1, 2, 3, 7, 8

ТЕКСТ ПРОЦЕДУРЫ НА PASCAL procedure Sort. Min (var Arr : array of Integer; n ТЕКСТ ПРОЦЕДУРЫ НА PASCAL procedure Sort. Min (var Arr : array of Integer; n : Integer); var i, j : Integer; Min, Pos, Temp : Integer; begin for i : = 0 to n - 1 do begin Min : = Arr [i ]; Pos : = i; for j : = i + 1 to n do if Arr [j] < Min then begin Min : = Arr [j]; Pos : = j; end; Temp : = Arr [i ]; Arr [i ] : = Arr [Pos]; Arr [Pos] : = Temp; end;

ТЕКСТ ПРОЦЕДУРЫ НА DELPHY procedure TForm 1. Buttonl. Click(Sender: TObject); const SIZE = 10; ТЕКСТ ПРОЦЕДУРЫ НА DELPHY procedure TForm 1. Buttonl. Click(Sender: TObject); const SIZE = 10; var a: array[1. . SIZE] of integer; min: integer; { номер минимального элемента в части массива от i до верхней границы массива } j: integer; { номер элемента, сравниваемого с минимальным } buf: integer; { буфер, используемый при обмене элементов массива } i, k: integer; begin // ввод массива for i : = l to SIZE do a[i] : = Str. To. Int(String. Gridl. Cells[i - 1, 0]); Iabel 2. caption : = '';

СОРТИРОВКА ВСТАВКАМИ Идея алгоритма: На n-ном шаге мы имеем упорядоченную часть массива из n СОРТИРОВКА ВСТАВКАМИ Идея алгоритма: На n-ном шаге мы имеем упорядоченную часть массива из n элементов, и следующий элемент встаёт на подходящее ему место. Пример исходный массив: 3 3 7 1 2 5 0 3 3 7 4 1 3 3 7 5 1 2 3 3 7 6 1 2 3 3 5 7 - 0 1 2 3 3 5 7 true 0 3 true 5 2 true 2 3 false 1 1 false 7 отсортированная часть массива вставка 3 шаг тек. элемент true - -

первый индекс массива - 0. ТЕКСТ ПРОЦЕДУРЫ НА PASCAL procedure Sort. Insert (var Arr первый индекс массива - 0. ТЕКСТ ПРОЦЕДУРЫ НА PASCAL procedure Sort. Insert (var Arr : array of Integer; n : Integer); var i, j, Temp : Integer; begin for i : = 1 to n do begin Temp : = Arr [i ]; j : = i - 1; while Temp < Arr [j] do begin Arr [j + 1] : = Arr [j]; Dec (j); if j < 0 then Break; end; Arr [j + 1] : = Temp; end;