Добавить комментарий

Delphi

Придурковатая сортировка

Алгоритм состоит из четырёх шагов:

  1. Сравниваем, и при необходимости обмениваем крайние элементы массива.
  2. Рекурсивно вызываем сортировку 2/3 элементов слева.
  3. Рекурсивно вызываем сортировку 2/3 элементов справа.
  4. Снова рекурсивно вызываем сортировку 2/3 элементов слева.

Магия рекурсии сделает всё остальное. 

type
  TAI = array of integer;
...
procedure StoogeSort(var A: TAI);

   procedure Stooge(Left, Right: integer);
   var
       mid : integer;
   begin
     if A[Left] > A[Right]  then swap(A[Left], A[Right]);
     if Right - Left > 1 then
     begin
       mid := (Right - Left + 1) div 3;
       Stooge(Left, Right - mid);
       Stooge(Left + mid, Right);
       Stooge(Left, Right - mid);
     end;
   end;

begin
  Stooge(Low(A), High(A));
end;

Практической пользы алгоритм не несёт, слишком уж неэффективен.

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.