Ten artykuł wprowadzi Cię w Radix Sort i powie, jak zaimplementować Radix Sort w C. Poniższe wskazówki zostaną omówione w tym artykule,
A więc zacznijmy,
Najprościej mówiąc, sortowanie polega na uporządkowaniu danych elementów w systematycznej kolejności. Sortowanie odbywa się w większości algorytmów, ponieważ ułatwia wyszukiwanie, co ostatecznie czyni algorytm wydajnym. Na tym blogu zrozumiemy jeden z powszechnie używanych algorytmów sortowania, czyli sortowanie Radix.
Algorytm sortowania przez scalanie c ++
Sortowanie według radix jest nieporównawczym algorytmem sortowania liczb całkowitych. Sortuje cyfrę po cyfrze, zaczynając od cyfry najmniej znaczącej (tj. Cyfra znajdująca się po prawej stronie) do cyfry najbardziej znaczącej (tj. Cyfra obecna po lewej stronie). Sortowanie radix używa sortowania zliczającego jako podprogramu do sortowania.
Dolna granica algorytmu sortowania opartego na porównaniu (takiego jak sortowanie na stosie, szybkie sortowanie, sortowanie przez scalanie) to & Omega (nLogn) i nie można ich ulepszyć poza nLogn. Jeśli mówimy o sortowaniu zliczającym, jest to algorytm liniowego sortowania po czasie o złożoności czasowej O (n + k), gdzie zakres mieści się w zakresie od 1 do k. Teraz problem z sortowaniem zliczającym polega na tym, że zajmuje O (n2), gdy elementy mieszczą się w zakresie od 1 do n2.
Tak więc, aby posortować tablicę z elementami z zakresu od 1 do n2 w czasie liniowym, potrzebujemy sortowania radix. Sortowanie radix sortuje tablicę cyfra po cyfrze, zaczynając od najmniej znaczącej cyfry do najbardziej znaczącej cyfry. Sortowanie radix używa sortowania zliczającego jako podprogramu do sortowania.
Kontynuując ten artykuł na temat programu Radix Sort w C,
Algorytm sortowania radix
Wykonaj następujące kroki dla wszystkich cyfr, zaczynając od najmniej znaczącej cyfry po prawej stronie, przechodząc do najbardziej znaczącej cyfry po lewej stronie.
Posortuj elementy metodą sortowania liczącego według bieżącej cyfry.
Przykład:
Oryginalna tablica:
140, 65, 85, 110, 612, 54, 12, 86
Po posortowaniu najmniej znaczącej cyfry, czyli na swoim miejscu, daje
140, 110, 612, 12, 54, 65, 85, 86
UWAGA: Ponieważ 612 pojawia się przed 12, a sortowanie jest wykonywane tylko dla jednej cyfry, więc 612 pojawia się przed 12 po tej iteracji.
Sortowanie według kolejnej cyfry, czyli na miejscu 10 daje:
110, 612, 12, 140, 54, 65, 85, 86
Sortowanie według najbardziej znaczącej cyfry, czyli obecnej na miejscu setek, daje:
012, 054, 065, 085, 086, 110, 140, 612
Kontynuując ten artykuł na temat programu Radix Sort w C,
Program sortowania radix w C
Najpierw spójrz na funkcję sortowania Radix
Funkcja Radix Sort:
void radixsort (int array [], int n) {// Pobierz największą liczbę, aby poznać maksymalną liczbę cyfr int m = getMax (array, n) int dig // Sortowanie zliczania jest wykonywane dla każdej cyfry dla (dig = 1 m / dig> 0 dig * = 10) countSort (tablica, n, dig)}
Kontynuując ten artykuł na temat programu Radix Sort w C,
Funkcja sortowania według liczby:
void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // Przechowuj liczbę wystąpień w count [] for (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Skopiuj tablica wyjściowa do arr [], więc arr [] teraz // zawiera posortowane liczby zgodnie z bieżącą cyfrą for (i = 0 i Idąc dalej, napiszmy program w C, który zaimplementuje sortowanie Radix.
Przykład:
#include // Funkcja do znalezienia największej liczby int getMax (int array [], int n) {int max = array [0] int i for (i = 1 i max) max = array [i] return max} // Funkcja dla Count sort void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // Przechowuj liczbę wystąpień w count [] for (i = 0 ja= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Skopiuj tablica wyjściowa do arr [], aby arr [] teraz // zawiera posortowane liczby zgodnie z bieżącą cyfrą for (i = 0 i 0 dig * = 10) countSort (array, n, dig)} // Funkcja do drukowania tablicy void print (int arr [], int n) {int i for (i = 0 i Wynik
Teraz, po wykonaniu powyższego programu, zrozumiałbyś program Radix Sort w C. W ten sposób doszliśmy do końca tego artykułu o „Quicksort in Java”. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z , zaufana firma zajmująca się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.