Jak nejlépe implementovat program Radix Sort v C?



Tento článek vám představí program Radix Sort In C a naváže na programovou ukázku pro lepší pochopení.

Tento článek vám představí Radix Sort a řekne vám, jak implementovat Radix Sort v C. Následující ukazatele budou popsány v tomto článku,

Pojďme tedy začít,





Jednoduše řečeno, třídění znamená uspořádat dané prvky v systematickém pořadí. Třídění se provádí ve většině algoritmů, protože usnadňuje vyhledávání, což nakonec činí algoritmus efektivní. V tomto blogu pochopíme jeden z běžně používaných soringových algoritmů, tj. Radix sort.

Radix sort je nekomparativní celočíselný třídicí algoritmus. Dělá číslování podle číslic třídění počínaje od nejméně významné číslice (tj. Číslice přítomná vpravo) po nejvýznamnější číslici (tj. Číslice přítomná vlevo). Radix sort používá počítání sort jako podprogram pro třídění.
Dolní mez pro srovnávací algoritmus založený na porovnávání (například Heap sort, Quick Sort, Merge Sort) je & Omega (nLogn) a nelze jej vylepšit nad nLogn. Pokud mluvíme o počítání řazení, jedná se o algoritmus lineárního třídění času s časovou složitostí O (n + k), kde rozsah leží mezi 1 až k. Nyní je problém s počítáním řazení ten, že trvá O (n2), když se prvky pohybují od 1 do n2.



Abychom mohli řadit pole s prvky, které se pohybují od 1 do n2 v lineárním čase, potřebujeme radix sort. Radix sort třídí číslici pole od číslice počínaje od nejméně významné číslice po nejvýznamnější číslici. Radix sort používá počítání sort jako podprogram pro třídění.

Pokračováním tohoto článku o programu Radix Sort In C,

Algoritmus Radix Sort

Proveďte následující kroky pro všechny číslice, počínaje od nejméně významné číslice přítomné vpravo, směrem k nejvýznamnější číslici přítomné vlevo.



Seřaďte prvky pomocí počítání podle aktuální číslice.
Příklad:

Původní pole:
140, 65, 85, 110, 612, 54, 12, 86

Třídění nejméně významné číslice, tj. Na jednom místě, dává

140, 110, 612, 12, 54, 65, 85, 86

POZNÁMKA: Protože 612 se objeví před 12 a třídění se provádí pouze pro jednu číslici, 612 se tedy objeví před 12 po této iteraci.

Třídění podle další číslice, tj. Na 10 s, dává:

110, 612, 12, 140, 54, 65, 85, 86

Třídění podle nejvýznamnější číslice, tj. Přítomné na 100. místě, dává:

012, 054, 065, 085, 086, 110, 140, 612

Pokračováním tohoto článku o programu Radix Sort In C,

Program třídění Radix v C

Nejprve se podívejte na funkci Radix sort

Funkce Radix Sort:

void radixsort (int array [], int n) {// Získejte největší počet, abyste zjistili maximální počet číslic int m = getMax (pole, n) int dig // Třídění počítání se provádí pro každou číslici pro (dig = 1 m / dig> 0 dig * = 10) countSort (pole, n, dig)}

Pokračováním tohoto článku o programu Radix Sort In C,

Funkce Count Count:

void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // Uložit počet výskytů v count [] pro (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Zkopírujte výstupní pole na arr [], takže arr [] nyní // obsahuje seřazená čísla podle aktuální číslice pro (i = 0 i

Pokročíme-li, napíšeme program C k implementaci třídění Radix.

Příklad:

#include // Funkce pro nalezení největšího čísla int getMax (int pole [], int n) {int max = pole [0] int i pro (i = 1 i max) max = pole [i] návrat max} // Funkce pro Count sort void countSort (int pole [], int n, int dig) {int výstup [n] int i, count [10] = {0} // Uložit počet výskytů v count [] pro (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Zkopírujte výstupní pole do arr [], takže arr [] nyní // obsahuje seřazená čísla podle aktuální číslice pro (i = 0 i 0 dig * = 10) countSort (pole, n, dig)} // funkce pro tisk pole neplatné print (int arr [], int n) {int i for (i = 0 i

Výstup

Výstup - Radix Sort Program v C- Edureka

Nyní po provedení výše uvedeného programu byste pochopili program Radix Sort In C. Dostali jsme se tedy na konec tohoto článku týkajícího se „Quicksort in Java“. Pokud se chcete dozvědět více, podívejte se na , důvěryhodná online vzdělávací společnost. Výcvikový a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java jako Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.

Algoritmus sloučení třídění v C ++