Hogyan lehet legjobban megvalósítani a Radix rendezési programot C-ben?



Ez a cikk megismerteti Önt a Radix rendezési programmal C-ben, majd egy programos bemutatót követ a jobb megértés érdekében.

Ez a cikk bemutatja a Radix Sort rendszert, és bemutatja, hogyan kell végrehajtani a Radix Sort rendszert A következő cikkeket tárgyaljuk ebben a cikkben,

Tehát kezdjük el akkor,





Egyszerű szavakkal, a rendezés azt jelenti, hogy az adott elemeket szisztematikus sorrendbe rendezzük. A rendezés a legtöbb algoritmusban megtörténik, mert megkönnyíti a keresést, ami végül hatékonyabbá teszi az algoritmust. Ebben a blogban meg fogjuk érteni az egyik leggyakrabban használt soring algoritmust, azaz a Radix sort.

A Radix sort egy nem összehasonlító egész szám rendezési algoritmus. Számjegyet rendez számjegyenként, a legkevésbé jelentős számjegytől (azaz a jobb oldalon lévő számjegytől kezdve) a legjelentősebb számjegyig (azaz a bal oldalon található számjegyig). A Radix rendezés a számlálás rendezését alprogramként rendezi.
Az összehasonlításon alapuló rendezési algoritmus (például Halom rendezés, Gyors rendezés, Összevonás rendezése) alsó határa a & Omega (nLogn), és az nLognon túl nem javítható. Ha a rendezés számlálásáról beszélünk, akkor ez egy lineáris idő-rendezési algoritmus O (n + k) idő komplexitással, ahol a tartomány 1 és k között van. Most a rendezés számlálásának problémája az, hogy O (n2) -et vesz fel, amikor az elemek 1-től n2-ig terjednek.



Tehát egy tömb rendezéséhez olyan elemekkel, amelyek lineáris időben 1 és n2 között mozognak, radix rendezésre van szükségünk. A Radix sort rendezi a tömb számjegyét számjegyenként, kezdve a legkevésbé jelentős számjegytől a legjelentősebb számjegyig. A Radix rendezés a számlálás rendezését alprogramként rendezi.

Továbblépve ezzel a cikkel a Radix Sort programról C-ben,

Radix rendezési algoritmus

Hajtsa végre a következő lépéseket az összes számjegyre a jobb oldalon lévő legkevésbé jelentős számjegytől kezdve, a bal oldali legjelentősebb számjegy felé haladva.



c ++ egy tömb rendezése

Rendezze az elemeket az aktuális számjegy szerinti számlálási rendezéssel.
Példa:

Eredeti tömb:
140, 65, 85, 110, 612, 54, 12, 86

A legkevésbé jelentős számjegy rendezése, azaz egy helyen ad

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

MEGJEGYZÉS: Mivel a 612 12 előtt jelenik meg, és a rendezés csak az egyik számjegyére vonatkozik, így a 612 12 előtt jelenik meg az iteráció után.

A következő számjegy szerinti rendezés, azaz a 10-es helynél:

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

A legjelentősebb számjegyek szerinti rendezés, azaz a 100-as éveknél jelen van:

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

Továbblépve ezzel a cikkel a Radix Sort programról C-ben,

Radix rendezési program C-ben

Először nézze meg a Radix rendezési funkciót

Radix rendezési funkció:

void radixsort (int tömb [], int n) {// Szerezd meg a legnagyobb számot a számjegyek maximális számának megismeréséhez int m = getMax (tömb, n) int dig // A számlálás rendezése minden (dig = 1) számjegyhez m / dig> 0 dig * = 10) countSort (tömb, n, dig)}

Továbblépve ezzel a cikkel a Radix Sort programról C-ben,

Számolási rendezési funkció:

void countSort (int tömb [], int n, int dig) {int kimenet [n] int i, count [10] = {0} // Események számának tárolása a [count] -ban (i = 0 i= 0 i--) {output [count [(tömb [i] / dig)% 10] - 1] = tömb [i] szám [(tömb [i] / dig)% 10] -} // A kimeneti tömb arr [] -ig, így az arr [] most // az aktuális számjegy szerint rendezett számokat tartalmaz (i = 0 i

Előre haladva írjunk egy C programot a Radix sort végrehajtására.

Példa:

#include // Funkció a legnagyobb szám megkeresésére int getMax (int tömb [], int n) {int max = tömb [0] int i (i = 1 i max) max = tömb [i] visszatér max} // Funkció a Count sort void countSort (int tömb [], int n, int dig) {int kimenet [n] int i, szám [10] = {0} // Események számának tárolása a [] számban (i = 0 esetén) én= 0 i--) {output [count [(tömb [i] / dig)% 10] - 1] = tömb [i] szám [(tömb [i] / dig)% 10] -} // A kimeneti tömb arr [] -ig, így az arr [] most // az aktuális számjegy szerint rendezett számokat tartalmaz az (i = 0 i 0 dig * = 10) countSort (tömb, n, dig)} // Funkció tömb nyomtatásához érvénytelen nyomtat (int arr [], int n) {int i for (i = 0 i

Kimenet

Kimenet - Radix rendezési program C- Edurekában

A fenti program végrehajtása után megértette volna a Radix Sort programot C-ben. Így a „Quicksort a Java-ban” című cikk végére értünk. Ha többet szeretne megtudni, nézze meg a , egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.