Jak korzystać z sortowania wyboru

Jak korzystać z sortowania wyboru

Sortowanie przez wybór to technika sortowania, która wybiera element listy, a następnie zamienia jego miejsce na inny. Wybiera największą pozycję, a następnie zamienia ją na pozycję z najwyższego indeksu listy.





Algorytm robi to wielokrotnie, dopóki lista nie zostanie posortowana. Jeśli nie masz pewności, jak działa sortowanie przez wybór, to trafiłeś we właściwe miejsce. Wyjaśnimy to bardziej szczegółowo poniżej, podając przykład.





Sortowanie wyboru: bliższe spojrzenie

Załóżmy, że masz listę: [39, 82, 2, 51, 30, 42, 7]. Aby posortować listę za pomocą sortowania przez wybór, musiałbyś najpierw znaleźć w niej najwyższą liczbę.





Przy podanej liście ta liczba to 82. Zamień 82 na numer w najwyższym indeksie (czyli 7).

Po pierwszym przejściu nowa kolejność listy będzie wyglądać następująco: [39, 7, 2, 51, 30, 42, 82]. Za każdym razem, gdy algorytm przechodzi przez całą listę, nazywa się to „przejściem”.



Zauważ, że podczas procesu sortowania lista zachowuje posortowaną podlistę i nieposortowaną podlistę.

błąd dostępu do zawartości folderu nie został przesłany

Związane z: Co to jest notacja Big-O?





Oryginalna lista zaczyna się od posortowanej listy zerowej elementów i nieposortowanej listy wszystkich elementów. Następnie po pierwszym przejściu ma posortowaną listę zawierającą tylko numer 82.

W drugim przejściu najwyższy numer na nieposortowanej podliście będzie wynosił 51. Numer ten zostanie zamieniony na 42, aby nadać nowy porządek na liście poniżej:





jak grać z przyjaciółmi na Minecraft

[39, 7, 2, 42, 30, 51, 82].

Proces jest powtarzany aż do posortowania całej listy. Poniższy rysunek podsumowuje cały proces:

Liczby pogrubione na czarno pokazują najwyższą wartość listy w tym czasie. Te w kolorze zielonym pokazują posortowaną podlistę.

Analiza algorytmu

Aby uzyskać złożoność (za pomocą notacji Big-O) tego algorytmu, wykonaj poniższe czynności:

W pierwszym przejściu dokonuje się porównań (n-1). W drugim przejściu (n-2). Przy trzecim przejściu (n-3) i tak dalej, aż do (n-1)-tego przejścia, które daje tylko jedno porównanie.

Podsumowując porównania jak poniżej daje:

(n-1)+ (n-1)+ (n-1)+...+1 = ((n-1)n)/2.

Dlatego sortowanie wyboru to O(n2).

Implementacja kodu

Kod przedstawia funkcje, których można użyć do wykonania sortowania przez wybór za pomocą Pythona i Javy.

Pyton:

def selectionSort(mylist):
for x in range(len(mylist) - 1, 0, -1):
max_idx = 0
for posn in range(1, x + 1):
if mylist[posn] > mylist[max_idx]:
max_idx = posn
temp = mylist[x]
mylist[x] = mylist[max_idx]
mylist[max_idx] = temp

Jawa:

void selectionSort(int my_array[]){
for (int x = 0; x {
int index = x;
for (int y = x + 1; y if (my_array[y] index = y; // find lowest index
}
}
int temp = my_array[index]; // temp is a temporary storage
my_array[index] = my_array[x];
my_array[x] = temp;
}}

Przechodzenie od sortowania wyboru do sortowania przez scalanie

Jak wykazała powyższa analiza algorytmu, algorytm sortowania przez wybór to O(n2). Ma złożoność wykładniczą i dlatego jest nieefektywny w przypadku bardzo dużych zestawów danych.

jak wydobyć dźwięk z wideo

Znacznie lepszym algorytmem do użycia byłoby sortowanie przez scalanie o złożoności O(nlogn). A teraz wiesz, jak działa sortowanie przez wybór, następnym krokiem na liście do nauki algorytmów sortowania powinno być sortowanie przez scalanie.

Udział Udział Ćwierkać E-mail 8 najlepszych stron internetowych do pobierania audiobooków za darmo

Audiobooki są doskonałym źródłem rozrywki i są znacznie łatwiejsze do strawienia. Oto osiem najlepszych stron internetowych, z których można je pobrać za darmo.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Programowanie
  • Algorytmy
O autorze Jerome Davidson(22 opublikowane artykuły)

Jerome jest pisarzem sztabowym w MakeUseOf. Zajmuje się artykułami na temat programowania i systemu Linux. Jest także entuzjastą kryptowalut i zawsze śledzi branżę kryptograficzną.

Więcej od Jerome'a ​​Davidsona

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować