Другие языки программирования и технологии
Сортировка массива методом выбора.
Ребят, помогите с программой. Пользователь вводит количество элементов (NUM) и заполняет каждый элемент случайными числами (arr). Нужно упорядочить массив методом выбора. В инете шарился, находил примеры, но они не помогли =( Единственное, в чем проблема - это как собственно упорядочить сам массив.
Сортировку выбором называют еще сортировкой поиском последовательных минимумов. При первом проходе ищется минимальное значение элементов массива, который затем меняется на первый элемент. Далее поиск продолжается на оставшихся значениях. Из оставшихся элементов ищется элемент с минимальным значением и меняется местами с первым из оставшихся, т. е. со вторым элементом исходного массива и т. д.
Program V1L09P2; {Сортировка выбором}
Uses Crt;{Вызов библиотечного модуля}
Const n=5;{Значение верхней границы массива}
Var v :array [1..n] of byte;
i,j,min,imin,c :byte;
begin
ClrScr;{Стирание экрана}
Randomize;{Установка генератора случайных чисел}
WriteLn('Сортировка методом выбора (вставкой) ');
WriteLn('Исходный массив: ');
{Генерация исходного массива}
for i:=1 to n do
begin
v:=Random(100);{Генерация случайных целых чисел от 0 до 100}
Write(v:3)
end;
{}
WriteLn;{Двойной перевод строки}
WriteLn('Сортировка: ');
{}
c:=0;{Начальное значение счетчика итераций}
for j:=1 to n-1 do{Внешний цикл сортировки}
begin
min:=v[j];{Минимальное значение элемента массива}
imin:=j;{Индекс минимального значения элемента массива}
for i:=j+1 to n do{Внутренний цикл сортировки}
if v<min>;{Присвоение мин. значения переменной min}
imin:=i{Присвоение индекса мин. значения
переменной imin}
end;
{Печать преобразованного итерацией массива}
for i:=1 to n do
Write(v:3);
{}
WriteLn;{Перевод строки}
{}
v[imin]:=v[j];{Обмен значений элементов массива}
v[j]:=min;{Присвоение мин. значения элементу массива}
c:=c+1{Счетчик итераций}
end;
{}
WriteLn('Количество итераций: ',c);
WriteLn;
WriteLn('Отсортированный массив: ');
for i:=1 to n do
Write(v:3);
{}
ReadKey
end.
Program V1L09P2; {Сортировка выбором}
Uses Crt;{Вызов библиотечного модуля}
Const n=5;{Значение верхней границы массива}
Var v :array [1..n] of byte;
i,j,min,imin,c :byte;
begin
ClrScr;{Стирание экрана}
Randomize;{Установка генератора случайных чисел}
WriteLn('Сортировка методом выбора (вставкой) ');
WriteLn('Исходный массив: ');
{Генерация исходного массива}
for i:=1 to n do
begin
v:=Random(100);{Генерация случайных целых чисел от 0 до 100}
Write(v:3)
end;
{}
WriteLn;{Двойной перевод строки}
WriteLn('Сортировка: ');
{}
c:=0;{Начальное значение счетчика итераций}
for j:=1 to n-1 do{Внешний цикл сортировки}
begin
min:=v[j];{Минимальное значение элемента массива}
imin:=j;{Индекс минимального значения элемента массива}
for i:=j+1 to n do{Внутренний цикл сортировки}
if v<min>;{Присвоение мин. значения переменной min}
imin:=i{Присвоение индекса мин. значения
переменной imin}
end;
{Печать преобразованного итерацией массива}
for i:=1 to n do
Write(v:3);
{}
WriteLn;{Перевод строки}
{}
v[imin]:=v[j];{Обмен значений элементов массива}
v[j]:=min;{Присвоение мин. значения элементу массива}
c:=c+1{Счетчик итераций}
end;
{}
WriteLn('Количество итераций: ',c);
WriteLn;
WriteLn('Отсортированный массив: ');
for i:=1 to n do
Write(v:3);
{}
ReadKey
end.
Что то не получаеся ввести код
// кажись это метод пузырька.... не помню уже =)
var i,j,n,buf:integer;
x: array [1..100] of integer;
begin
readln (n); // кол-во элементов заданные пользователем
//вводим значения
for i:=1 to n do
readln (x [ i ]);
// сортируем
for j:=1 to n do
for i:=1 to n-1 do
if (x[ i ] > x [ i+1 ]) then
begin
buf:=x[ i ];
x [ i ]:= x [ i+1 ];
x [ i+1 ]:= buf;
end;
// выводим результат
for i:=1 to n do
writeln ('x [ ',i,' ] =', x [ i ]);
readln;
end.
// однако чем этот вариант плох? выглядит короче предыдущего примера =))
var i,j,n,buf:integer;
x: array [1..100] of integer;
begin
readln (n); // кол-во элементов заданные пользователем
//вводим значения
for i:=1 to n do
readln (x [ i ]);
// сортируем
for j:=1 to n do
for i:=1 to n-1 do
if (x[ i ] > x [ i+1 ]) then
begin
buf:=x[ i ];
x [ i ]:= x [ i+1 ];
x [ i+1 ]:= buf;
end;
// выводим результат
for i:=1 to n do
writeln ('x [ ',i,' ] =', x [ i ]);
readln;
end.
// однако чем этот вариант плох? выглядит короче предыдущего примера =))
Похожие вопросы
- Сортировка массива методом Шелла
- c#. Сортировка массива в отдельном методе. Консольное приложение.
- сортировка массива. какой метод сортировки массива самый быстрый и эффективный?
- Delphi - Сортировка массива и вывод его в стринг грид
- Задачка на сортировку массивов
- Сортировка массива (Паскаль) помогите пожалуйста
- Pascal. Сортировка массива.
- Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?
- сортировка массива pascal
- Зачем при сортировке массива делать два цикла с for, почему нельзя сделать один цикл?