Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.04;
Скачать: CL | DM;

Вниз

Сортировка выбором   Найти похожие ветки 

 
ИванН   (2008-11-09 15:50) [0]

У меня есть код сортировки выбором http://ru.wikipedia.org/wiki/Сортировка_выбором , но в коде есть странное место, не соответствующее алгоритму описанному на википедии, а именно:

for i := 1 to n - 1 do
begin
 min := i;
 Flag := False;
 for j := i + 1 to n do
   if a[min] > a[j] then
   begin
     min := j;
     Flag := True;
   end;
 if Flag then
 begin

   t := a[i];
   a[i] := a[min];
   a[min] := t;
 end;  
end;


Вопрос - зачем сделана такая проверка?

Спасибо.


 
palva ©   (2008-11-09 16:21) [1]

Если первый элемент и так оказался минимальным, то переставлять элементы не надо. Можно было не заморачиваться с флагом, а проверять равенство min = i. Если оно выполняется, то это эквивалентно Flag = False.


 
ИванН   (2008-11-09 16:24) [2]

Ну получается эта дополнительная проверка не обязательная? Без проверки - если у меня первый окажется минимальным, то просто будет лишняя-пустая перестановка одного и того же, я прав?


 
palva ©   (2008-11-09 18:52) [3]

Это зависит от того, сколько стоит эта пустая перестановка. Если мы занимаемся сортировкой блоков, расположенных на диске, (какая-нибудь дефрагментация), да еще если обычно блоки УЖЕ лежат как надо, и перемещать их не требуется, то такая проверка будет уместна для эффективности работы, хотя на результат работы она не повлияет.


 
TUser ©   (2008-11-09 20:50) [4]

Добавлю, что если речь идет о лбой сортиовке, где важно время, такой алгоритм всегда крайне неэффективен. Хоть бы даже  с флагом.



Страницы: 1 вся ветка

Текущий архив: 2009.01.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
15-1221220682
pavel_guzhanov
2008-09-12 15:58
2009.01.04
Пришло приглашение на семинар


15-1226050249
cosinus
2008-11-07 12:30
2009.01.04
Посоветуйте книгу


8-1188126179
Dr. Andrew
2007-08-26 15:02
2009.01.04
Как нарисовать спираль Fermat с отрисовкой в писелах?


15-1225462808
kaif
2008-10-31 17:20
2009.01.04
Зарегистрировал ИП


2-1227263813
charoey_mag
2008-11-21 13:36
2009.01.04
SQL запрос