|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
сортировка методом пузырька
Здравствуйте
Да да я знаю что можно найти темы по этому вопросу но всё же прошу сильно не ругайтесь... Уже 3 день не могу сделать нормальную сортировку... Помогите плиз подправить именно ЭТОТ код... Основная проблема в том что практически всё работает но когда происходит поиск очередного самого маленького числа происходит его всплытие в самое начало списка не смотря на то что оно было изначально на нужной позиции... В общем нужно сделать так что если число изначально на своей позиции не всплывало... Уже перевёл код в pascal дабы проще было делать отладку но результата 0((... Код:
USES CRT; var mass:array[1..10] of integer; open,min,buf,x_buf:integer; x,xx,up_1,up_2,up_x,z:integer; Begin mass[1]:=4; mass[2]:=9; mass[3]:=5; mass[4]:=9; mass[5]:=7; mass[6]:=1; mass[7]:=3; mass[8]:=8; mass[9]:=2; mass[10]:=1; for x:=1 to 10 do Write(mass[x]); Writeln; Repeat if open=0 then begin Inc(xx); min:=mass[xx]; for x:=xx to 10 do if min>=mass[x] then begin min:=mass[x]; x_buf:=x; end; open:=1; up_1:=x_buf-1; up_2:=x_buf; z:=1; end; if z=0 then begin Dec(up_1); Dec(up_2); end else z:=0; buf:=mass[up_1]; mass[up_1]:=min; mass[up_2]:=buf; if up_1=xx then open:=0; for x:=1 to 10 do Write(mass[x]); Writeln; ReadKey; ClrScr; Until 2>3; End. |
#2
|
||||
|
||||
Зачем делать (доделывать) что-то сложное и непонятное, да еще и нечитаемо оформленное, когда на той же википедии есть готовый алгоритм сортировки из 5 строк? Где ошибка - точно сказать не могу, потому что по-моему ошибка во всей программе. Хотя бы потому, что обмен элементов всегда производится без каких-либо условий (стоит вне тела какого-либо IF). Даже если ничего менять не надо.
jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 16.04.2013 в 20:58. |