Недолуге сортування

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Stooge sort)
Перейти до навігації Перейти до пошуку

Недолуге сортування — це рекурсивний алгоритм сортування . Йому притаманна надзвичайно погана часова складність O(nlog 3 / log 1.5 ) = O(n2.7095...). Швидкість роботи алгоритму менша порівняно з оптимальними алгоритмами сортування, він повільниший за Bubble sort, що є канонічним прикладом досить неефективного алгоритму сортування. Однак він ефективніший, ніж Slowsort . Назва походить від комедійного тріо The Three Stooges.

Алгоритм визначається наступним чином:

  • Якщо значення на початку списку більше значення в кінці списку, то поміняти їх місцями.
  • Якщо в списку є 3 або більше елементів:
    • Рекусивно застосувати алгоритм до перших 2/3 списку
    • Рекусивно застосувати алгоритм до останніх 2/3 списку
    • Знову рекусивно застосувати алгоритм до перших 2/3 списку

При обчисленні кількості елементів при вираховуванні 2/3 списку, важливо округлювати вгору, наприклад, 2/3 від 5 має бути 4, а не 3, оскільки в іншому випадку для певних даних сортування може бути невдалим.

Реалізація[ред. | ред. код]

 function stoogesort(array L, i = 0, j = length(L)-1){
   if L[i] > L[j] then   
     L[i]  L[j]      
   if (j - i + 1) > 2 then   
     t = floor((j - i + 1) / 3)
     stoogesort(L, i , j-t) 
     stoogesort(L, i+t, j)  
     stoogesort(L, i , j-t) 
   return L
 }