Четверг, 28.11.2024, 19:50
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1313
Статистика

Онлайн всего: 5
Гостей: 5
Пользователей: 0
Метод пузырька с флагом

Идея состоит в том, что если при выполнении прохода методом пузырька не было ни одного обмена элементов массива, то это означает, что  массив уже отсортирован и остальные проходы не нужны.
Реализация алгоритма на паскале:

   repeat
     
flag := False; {
сбросить
флаг }
     
for j:=N-1 downto 1 do

        
if A[j] > A[j+1] then
         begin

            с
:= A[j];
            A[j] := A[j+1];

           
A[j+1] :=
с
;
           
flag := True; {
поднять
флаг }
        
end;

   until not flag;  {
выход при
flag=False }


 Э
тот метод можно еще улучшить если добавить счетчик проходов. После одного прохода один элемент будет стоять на своем месте, а значит с ним сравнивать не имеет смыслы. Реализация улучшенного метода сортировки пузырьком с флажком:

   i := 0;

   repeat

      
i := i + 1;

      
flag := False; {
сбросить
флаг }
      
for j:=N-1 downto 1 do
         
if A[j] > A[j+1] then
          begin

             с
:= A[j];
             A[j] := A[j+1];

            
A[j+1] :=
с
;
            
flag := True; {
поднять
флаг }
          
end;

    until not flag;  {
выход при
flag=False }

 

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---