метод пузырька паскаль



Автор Artishka задал вопрос в разделе Другие языки и технологии

Пузырьковый метод. Паскаль , Хелп и получил лучший ответ

Ответ от Жанна Кузнецова[гуру]
мне не нравится, что if односторонний.
давай полную форму!!

Ответ от Влад Симкин[гуру]
ну насколько я понял это метод сортировки одномерного массива!
тогда и нужно выводить сам отсортированный массив!
write(' ',t); -удали
за циклами процесса сортировки введи вот этот цикл вывода
...
for i:=1 to n do writeln(a [ i ] );
readkey;
end.

Ответ от Алексей пупкин[гуру]
program garbage;
{$APPTYPE CONSOLE}
type
x = array [1 .. 100] of integer;
var
a: x;
i, j, n, t: integer;
Begin
Randomize;
readln(n);
for i := 1 to n do
begin
a[ i ] := random(20);
write(a[ i ], ' ');
end;
writeln;
for i := 1 to n do
begin
for j := 1 to (n - 1) do
if a[ j + 1 ] < a[j] then
begin
t := a[ j + 1 ];
a[ j + 1 ] := a[ j ];
a[ j ] := t;
end;
end;
for i := 1 to n do
write(a[ i ], ' ');
readln;
end.
Вот так будет работать нормально. Примечание: работает в делфи.
Что было не так:
1) Надо инициализировать генератор случайных чисел
2) Внутренний цикл должен перебирать все элементы
3) Количество итераций внешнего цикла должно быть равно количеству элементов
4) Бессмысленно выводить временную переменную внутри циклов, она не покажет новый массив 🙂

Ответ от Виктор Фадеев[гуру]
У тебя t - временная (или вспомогательная, что не суть как важно) переменная, т. е. в нее заносятся данные элемента массива. Ее вывод на экран не иначе как бред. Ты сортируешь массив, его и нужно выводить.
Сам метод "пузырьковой сортировки" заключается в том, что задействованы два цикла. Один цикл выполняет продвижение по массиву, при этом значение текущего элемента "передается" во второй цикл, дальше в этом цикле уже текущий элемент сравнивается с остальными, не отсортированными элементами массива, если выполняется условие, то этот элемент всплывает ( аля пузырек воздуха в воде ну или у кого там какие ассоциации еще) и происходит обмен текущего со сравниваемым или же переходим к следующему элементу.
У тебя сам процесс описан неверно.
var a:array[1..100] of integer;
k,j,tmp,n:integer;
begin
randomize;
write('vvedite razmernost'': '); readln(n);
for k:=1 to n do
begin
a[k]:=random(10);
writeln(a[k])
end;
for k:=1 to n-1 do
for j:=k to n-1 do
if a[k]>a[j+1] then
begin
tmp:=a[k];
a[k]:=a[j+1];
a[j+1]:=tmp
end;
writeln('novii massiv: ');
for k:=1 to n do
writeln(a[k]);
readln
end.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Пузырьковый метод. Паскаль , Хелп
Сортировка пузырьком на Википедии
Посмотрите статью на википедии про Сортировка пузырьком
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*