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

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

 
const N=30 
var Matrix: array[1..n] of integer; 

заполнение массива производили случайными числами

 
randomize; 
for i:=1 to n do 
Matrix[i]:=random(15); 

Задача состоит в том, что бы упорядочить элементы массива по возрастанию или спаданию Рассмотрим два алгоритма, которые нам позволят это сделать 1. Метод Пузырька 2. Метод перестановки Суть метода Пузырька (который также называют методом простого обмена) состоит в том, что бы обменивать 2 рядом стоящих элемента о тех пор, пока не выстроится возрастающая (спадающая) последовательность. Алгоритм и особенности этой сортировки таковы: 1.При первом проходе по массиву элементы попарно сравниваются между собой: первый со вторым, затем второй с третьим, следом третий с четвертым и т.д. Если предшествующий элемент оказывается больше(меньше) последующего, то их меняют местами. 2.При обмене элементов массива обычно используется «буферная» (третья) переменная — Temp, куда временно помещается значение одного из элементов.

 
const 
 N = 20; 
var 
 Matrix: array[1..N] of integer; 
 i, j: integer; 
 temp:integer; 
BEGIN 
 randomize; 
  
 write ('Исходный массив: '); 
 for i := 1 to N do  
 begin 
 Matrix[i] := random(99); 
 write (Matrix[i]:3); 
 end;

writeln;  
writeln('***********************'); 
  
 for i := 1 to N do 
 for j := 1 to N-i do 
 if Matrix[j] ≤ Matrix[j+1] then begin 
 temp := Matrix[j]; 
 Matrix[j] := Matrix[j+1]; 
 Matrix[j+1] := temp; 
 end; 
  
 write ('Отсортированный массив: '); 
 for i := 1 to N do 
 write (Matrix[i]:3); 
writeln;  
writeln('Press Enter to Exit'); 
readln;; 
end. 

Более интересный вариант демонстрации сортировки можно глянуть ТУТ

2 способ: Метод перестановки. Суть такова: берем текущий элемент и сравниваем его со всеми последующими. Если находим что то меньше(больше) то меняем их местами.

 
const N=10; 
var Matrix:array[1..N] of integer; 
 i,j:integer; 
 temp:integer; 
begin 
randomize; 
 writeln ('Исходный массив: '); 
 for i := 1 to N do begin 
 Matrix[i] := random(99); 
 write (Matrix[i]:3); 
 end; 
 writeln; 
 writeln('***********************'); 
  
 for i:=1 to N-1 do 
 for j:=i+1 to N do 
 if Matrix[i] ≥ Matrix[j] then 
 begin 
 temp := Matrix[j]; 
 Matrix[j] := Matrix[i]; 
 Matrix[i] := temp; 
 end; 
  
 writeln ('Отсортированный массив: '); 
 for i := 1 to N do 
 write (Matrix[i]:3); 
 writeln; 
  
writeln('Press Enter to Exit'); 
readln; 
end. 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии