Kaip geriausiai įgyvendinti „Radix“ rūšiavimo programą C?



Šis straipsnis supažindins jus su „Radix“ rūšiavimo programa C ir tęsis po programinės demonstracijos, kad geriau suprastumėte.

Šis straipsnis supažindins jus su „Radix Sort“ ir paaiškins, kaip įdiegti „Radix Sort“ C. Toliau pateikiami patarimai bus aptarti šiame straipsnyje,

Taigi pradėkime tada,





Paprastais žodžiais tariant, rūšiavimas reiškia duotų elementų išdėstymą sistemine tvarka. Rūšiavimas atliekamas daugumoje algoritmų, nes tai palengvina paiešką, o tai ilgainiui daro algoritmą efektyvų. Šiame tinklaraštyje suprasime vieną iš dažniausiai naudojamų soringo algoritmų, t. Y. „Radix“ rūšiavimą.

„Radix sort“ yra nelyginamasis sveikųjų skaičių rūšiavimo algoritmas. Rūšiuojamas skaitmenis skaičiais pradedant nuo mažiausiai reikšmingo skaičiaus (t. Y. Dešinėje esančio skaitmens) iki reikšmingiausio skaičiaus (t. Y. Kairėje esančio skaitmens). „Radix sort“ rūšiavimui naudoja skaičiavimo rūšiavimą kaip paprogramę.
Apatinė palyginimo pagrindu sukurto rūšiavimo algoritmo riba (pvz., „Heap sort“, „Quick Sort“, „Merge Sort“) yra „Omega“ („nLogn“), todėl jos negalima patobulinti už „nLogn“. Jei kalbėsime apie rūšiavimo skaičiavimą, tai yra linijinis laiko rūšiavimo algoritmas su O (n + k) laiko kompleksiškumu, kur diapazonas yra nuo 1 iki k. Dabar rūšiavimo skaičiavimo problema yra ta, kad reikia elementų O (n2), kai elementai svyruoja nuo 1 iki n2.



Taigi, norint išrūšiuoti masyvą su elementais, kurie svyruoja nuo 1 iki n2 linijiniu laiku, mums reikia radiksų rūšiavimo. „Radix sort“ rūšiuoja masyvo skaitmenį pagal skaitmenį, pradedant nuo mažiausiai reikšmingo skaitmens iki reikšmingiausio skaitmens. „Radix sort“ rūšiavimui naudoja skaičiavimo rūšiavimą kaip paprogramę.

Toliau su šiuo straipsniu apie „Radix“ rūšiavimo programą C,

„Radix“ rūšiavimo algoritmas

Atlikite šiuos veiksmus visiems skaitmenims, pradedant nuo mažiausiai reikšmingo skaitmens, esančio dešinėje, link svarbiausio skaitmens, esančio kairėje.



Rūšiuoti elementus naudojant skaičiavimo rūšiavimą pagal esamą skaitmenį.
Pavyzdys:

Originalus masyvas:
140, 65, 85, 110, 612, 54, 12, 86

Rūšiuojant mažiausiai reikšmingą skaitmenį, t. Y. Vietoje, duodama

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

PASTABA: Kadangi 612 pasirodo prieš 12, o rūšiavimas atliekamas tik nuo vieno skaitmens, 612 po šios iteracijos rodomas prieš 12.

Rūšiuoti pagal kitą skaitmenį, t. Y. 10-oje vietoje, gaunama:

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

Rūšiuojant pagal reikšmingiausią skaitmenį, t. Y. 100-ųjų vietoje, gaunama:

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

Toliau su šiuo straipsniu apie „Radix“ rūšiavimo programą C,

„Radix“ rūšiavimo programa C

Pirmiausia pažvelkite į „Radix“ rūšiavimo funkciją

„Radix“ rūšiavimo funkcija:

negaliojantis radixsort (int masyvas [], int n) {// Gaukite didžiausią skaičių, kad sužinotumėte didžiausią skaičių skaitmenų int m = getMax (masyvas, n) int dig // Skaičiavimo rūšiavimas atliekamas kiekvienam skaitmeniui (dig = 1) m / dig> 0 dig * = 10) countSort (masyvas, n, dig)}

Toliau su šiuo straipsniu apie „Radix“ rūšiavimo programą C,

Skaičiavimo rūšiavimo funkcija:

void countSort (int masyvas [], int n, int dig) {int išvestis [n] int i, skaičius [10] = {0} // Išsaugoti įvykių skaičių skaičiuje [], skirtame (i = 0 i= 0 i--) {output [count [(masyvas [i] / dig)% 10] - 1] = masyvas [i] count [(masyvas [i] / dig)% 10] -} // nukopijuokite išvesties masyvą į arr [], kad arr [] dabar // būtų surūšiuoti skaičiai pagal dabartinį skaitmenį (i = 0 i

Žengdami į priekį, parašykime C programą, kad įdiegtume „Radix“ rūšiavimą.

Pavyzdys:

pirmojo plano planavimo algoritmas c
#include // Funkcija, skirta rasti didžiausią skaičių int getMax (int masyvas [], int n) {int max = masyvas [0] int i (i = 1 i max) max = masyvas [i] return max} // Funkcija „Count sort void countSort“ (int masyvas [], int n, int dig) {int išvestis [n] int i, count [10] = {0} // Įvykių skaičiaus saugojimas skaičiuje [], skirtas (i = 0 i= 0 i--) {output [count [(masyvas [i] / dig)% 10] - 1] = masyvas [i] count [(masyvas [i] / dig)% 10] -} // nukopijuokite išvesties masyvą į arr [], kad arr [] dabar // yra surūšiuoti skaičiai pagal esamą skaitmenį (i = 0 i 0 dig * = 10) countSort (masyvas, n, dig)} // Funkcija spausdinti masyvą negaliojanti spausdinti (int arr [], int n) {int i (i = 0 i

Rezultatas

Išvestis - „Radix“ rūšiavimo programa „C- Edureka“

Dabar, atlikę pirmiau minėtą programą, būtumėte supratę „Radix Sort“ programą C. Taigi mes baigėme šį straipsnį apie „Quicksort in Java“. Jei norite sužinoti daugiau, patikrinkite , patikima mokymosi internetu įmonė. „Edureka“ „Java J2EE“ ir „SOA“ mokymo ir sertifikavimo kursai skirti mokyti jus tiek pagrindinėms, tiek pažangioms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje, ir mes kuo greičiau susisieksime su jumis.