Sortowanie patologiczne
Twój szef zażądał opracowania algorytmu sortowania w celu poprawy wydajności aplikacji twojej firmy. Jednak po napisaniu aplikacji wiesz, że prawdopodobnie nie będziesz w stanie znacznie przyspieszyć jej działania. Nie chcąc zawieść swojego szefa, postanowiłeś opracować nowy algorytm, który działa nawet lepiej niż * sortowanie na niektórych zestawach danych. Oczywiście, nie możesz dać do zrozumienia, że algorytm działa tylko w niektórych przypadkach, więc chcesz, aby był jak najbardziej niejasny.
Celem tego konkursu jest napisanie procedury sortowania w wybranym języku, który będzie działał lepiej na określonych zestawach danych niż inne, z powtarzalnymi wynikami. Im bardziej szczegółowa klasyfikacja określa prędkość, tym lepiej. Algorytm musi dokonywać pewnego rodzaju sortowania, więc algorytm, który zależy od danych, które są już całkowicie posortowane (jak w algorytmie, który nic nie robi), lub algorytm, który zależy od danych, które są całkowicie posortowane w odwrotnej kolejności, są nieprawidłowe. Algorytm sortowania musi poprawnie sortować dowolny zestaw danych.
Po przedstawieniu procedury prosimy o wyjaśnienie, dlaczego działa ona tylko na niektórych zestawach danych, oraz na włączenie testów na co najmniej jednym zestawie dobrych (szybkich) danych i jednym zestawie złych (wolnych) danych. Chodzi o to, aby móc udowodnić swojemu szefowi, że natknąłeś się na lepszy sposób sortowania, więc więcej danych testowych jest lepszych. Oczywiście pokażesz swojemu szefowi tylko wyniki testu z dobrych danych, więc wada wymaganych danych testowych nie może być zbyt oczywista. Jeśli dotyczy twojego języka, pokaż, że Twój algorytm jest szybszy niż wbudowany algorytm sortowania w Twoim języku.
Na przykład, można przesłać algorytm sortowania wstawiania, przy czym dobre dane to dane, które są już prawie posortowane, a złe dane to dane całkowicie losowe, ponieważ sortowanie wstawiania zbliża się do O (n) na prawie posortowanych danych. Nie jest to jednak zbyt dobre, ponieważ mój szef prawdopodobnie zauważyłby, że wszystkie dane testowe są już prawie posortowane.
To konkurs popularności , więc wygrywa odpowiedź z największą liczbą głosów po 7 dniach (21 maja).
Jeśli nikt mnie nie pobije, chciałbym przesłać odpowiedź wiki społeczności, która korzysta z równomiernie rozmieszczonych zestawów danych.