Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую по убыванию.Массив заполнен случайными числа от 0 до 500длинна массива 100 элементов.Массив одномерный Примечание: Элементы с первой половины массива не должны попадать во вторую половину.
———- Добавлено в 19:57 ———- Предыдущее сообщение было написано в 18:52 ———-
program n32;
var x,i:integer;
a:array [1..100] of integer;
begin
for i:=1 to 100 do a[i]:= random (500);
for i:=1 to 100 do
writeln (‘a[,i,]=’,a[i]);
begin
for i:=1 to 50 do
if a[i]>a[i+1] then
x:=a[i];
a[i]:=a[i+1];
a[i+1]:=x;
end;
for i:=1 to 50 do
Write ( a [ i ],’ ‘);
end.
Регистрация: 14.02.2015
Сообщений: 28
Репутация: 0
program n32;
var y,x,j,imin,imax,i:integer;
a:array [1..100] of integer;
begin
for i:=1 to 100 do a[i]:= random (500);
for i:=1 to 100 do
write (‘a[, ,]=’,a[i]);
Паскаль с нуля [ч12]. Сортировка массива методом пузырька
for i:=1 to 49 do
begin
imax:=i;
for j:=i+1 to 50 do
if a[j]>a[imax] then imax:=j;
x:=a[i];
a[i]:=a[imax];
a[imax]:=x;
end;
for i:=51 to 99 do
begin
imin:=i;
for j:=i+1 to 100 do
if a[j] y:=a[i];
a[i]:=a[imin];
a[imin]:=y;
end;
for i:=1 to 100 do writeln(‘a[,массив ,]=’,a[i]);
end.
Прогу написал, вроде бы работает.Только вот хочу добавить эстетики..как мне вывести пронумерованный массив?
Регистрация: 21.11.2009
Сообщений: 486
Репутация: 47
Stop, можно, например, так:
program n32; var y,x,j,imin,imax,i:integer; a:array [1..100] of integer; begin for i:=1 to 100 do a[i]:= random (500); for i:=1 to 100 do write (‘a[, ,]=’,a[i]); for i:=1 to 49 do begin imax:=i; for j:=i+1 to 50 do if a[j]>a[imax] then imax:=j; x:=a[i]; a[i]:=a[imax]; a[imax]:=x; end; for i:=51 to 99 do begin imin:=i; for j:=i+1 to 100 do if a[j]for i:=1 to 100 do writeln(i,’. ‘,’a[,массив ,]=’,a[i]); Readln; end.
« Предыдущая тема | Следующая тема »
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) |
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Источник: pchelpforum.ru
Написать программу которая сортирует массив по возрастанию паскаль
Существует множество методов сортировки. Одни из них являются более эффективными, другие
проще для понимания. Достаточно простой для понимания является сортировка методом пузырька, который
также называют методом простого обмена. В чем же он заключается, и почему у него такое странное
название: «метод пузырька»?
Сортировка массива пузырьком | Pascal
Как известно воздух легче воды, поэтому пузырьки воздуха всплывают. Это просто аналогия. В
сортировке методом пузырька по возрастанию более легкие (с меньшим значением) элементы постепенно
«всплывают» в начало массива, а более тяжелые друг за другом опускаются на дно (в конец массива).
Алгоритм и особенности сортировки:
- При первом проходе по массиву элементы попарно сравниваются между собой: первый со вторым, затем второй с третьим, следом третий с четвертым и т.д. Если предшествующий элемент оказывается больше последующего, то их меняют местами.
- Не трудно догадаться, что постепенно самое большое число оказывается последним. Остальная часть массива остается не отсортированной, хотя некоторое перемещение элементов с меньшим значением в начало массива наблюдается.
- При втором проходе незачем сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте. Значит, число сравнений будет на одно меньше.
- На третьем проходе уже не надо сравнивать предпоследний и третий элемент с конца. Поэтому число сравнений будет на два меньше, чем при первом проходе.
- В конце концов, при проходе по массиву, когда остаются только два элемента, которые надо сравнить, выполняется только одно сравнение.
- После этого первый элемент не с чем сравнивать, и, следовательно, последний проход по массиву не нужен. Другими словами, количество проходов по массиву равно n-1, где n – это количество элементов массива.
- Количество сравнений в каждом проходе равно n-j, где j – это номер прохода по массиву (первый, второй, третий и т.д.).
- При обмене элементов массива обычно используется «буферная» (третья) переменная, куда временно помещается значение одного из элементов.
Источник: objectone.ru
Сортировка массива методом «пузырька»
Сейчас мы поговорим о сортировки массива так называемым методом «пузырька». По другому этот метод называется методом перестановок или методом обмена. Почему метод известен как метод «пузырька», да просто потому, что при его реализации более «легкие» элементы как бы всплывают вверх. Соответственно, более тяжелые «идут ко дну», один человек, обладающий видимо хорошим чувством юмора, заметил, что по всей видимости, пессимисты называют метод пузырька методом «утопленника».
Итак, представим, что у нас есть целочисленный массив из 10 элементов и нам его необходимо отсортировать по возрастанию.
Вот код программы на Паскале:
const n = 10; var a:array[1..n] of integer; i,j,buf:integer; begin for i:=1 to n do begin a[i]:=random(10); write(a[i],’ ‘); end; for i:=1 to n-1 do for j:=i+1 to n do В этой строке начинающие программисты чаcто допускают ошибку> if a[i]>a[j] then begin buf:=a[i]; a[i]:=a[j]; a[j]:=buf; end; writeln; writeln(‘Массив после сортировки пузырьковым методом: ‘); for i:=1 to n do write(a[i],’ ‘); end.
Пояснения. Как видно из текста программы на Паскале, при сортировке массива методом пузырька, сравниваются два соседних элемента массива. В том случае, если элемент массива с номером i оказывается больше элемента массива с номером i+1 , происходит обмен значениями при помощи вспомогательной переменной buf (переменной я дал название со смысловой нагрузкой, от слова «буфер»).
Возможные ошибки. Как показывают мои личные наблюдения, начинающие программисты постоянно наступают на одни и те же грабли. Вместо строки «for j:=i+1 to n do» они зачастую пишут «for j:=2 to n do», что хоть и приводит к обмену значениями некоторых переменных, но не дает необходимого результата.
При копировании материалов обратная ссылка обязательна
Источник: inf5.ru