Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.04.2013, 20:53
Van-89 Van-89 вне форума
Прохожий
 
Регистрация: 20.11.2012
Адрес: Новокузнецк
Сообщения: 25
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию сортировка методом пузырька

Здравствуйте

Да да я знаю что можно найти темы по этому вопросу но всё же прошу сильно не ругайтесь...

Уже 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.
Изображения
Тип файла: jpg Безымянный.jpg (12.6 Кбайт, 4 просмотров)
Ответить с цитированием
  #2  
Старый 16.04.2013, 20:55
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Зачем делать (доделывать) что-то сложное и непонятное, да еще и нечитаемо оформленное, когда на той же википедии есть готовый алгоритм сортировки из 5 строк? Где ошибка - точно сказать не могу, потому что по-моему ошибка во всей программе. Хотя бы потому, что обмен элементов всегда производится без каких-либо условий (стоит вне тела какого-либо IF). Даже если ничего менять не надо.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 16.04.2013 в 20:58.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter