Kuinka parhaiten toteuttaa Radix-lajitteluohjelma C: ssä?

Tässä artikkelissa esitellään sinulle Radix Lajitteluohjelma C: ssä ja seurataan sen ohjelmallista esittelyä ymmärtämisen parantamiseksi.

Tässä artikkelissa esitellään sinulle Radix Lajittelu ja kerrotaan, miten Radix Lajittelu otetaan käyttöön C. Seuraavat ohjeet käsitellään tässä artikkelissa,

Joten aloitetaan sitten,



Yksinkertaisesti sanottuna lajittelu tarkoittaa annettujen elementtien järjestämistä systemaattiseen järjestykseen. Lajittelu tapahtuu useimmissa algoritmeissa, koska se tekee hausta helpompaa, mikä lopulta tekee algoritmista tehokkaan. Tässä blogissa ymmärretään yksi yleisimmin käytetyistä lajittelualgoritmeista eli Radix-lajittelu.

Radix-lajittelu on ei-vertaileva kokonaislukujen lajittelualgoritmi. Se lajittelee numerolajittelun alkaen vähiten merkitsevästä numerosta (eli oikealla olevasta numerosta) merkittävimpään numeroon (ts. Vasemmalla olevaan numeroon). Radix-lajittelu käyttää laskemislajittelua aliohjelmana lajittelussa.
Vertailupohjaisen lajittelualgoritmin (kuten Heap sort, Quick Sort, Merge Sort) alaraja on & Omega (nLogn), eikä niitä voida parantaa nLognin ulkopuolella. Jos puhumme lajittelulaskemisesta, se on lineaarinen aikalajittelualgoritmi, jolla on O (n + k) -aikakompleksisuus, jossa alue on välillä 1 - k. Lajittelulajin ongelma on, että se vie O (n2), kun elementit vaihtelevat välillä 1 - n2.

Joten, jos haluat lajitella taulukon, jonka elementit vaihtelevat välillä 1 - n2 lineaarisessa ajassa, tarvitsemme radix-lajittelun. Radix-lajittelu järjestää matriisinumeron numeroittain vähiten merkitsevästä numerosta merkittävimpään numeroon. Radix-lajittelu käyttää laskemislajittelua aliohjelmana lajittelussa.

python def __init__

Siirrymme tämän artikkelin kanssa Radix Lajittelu-ohjelmasta C: ssä,

Radix-lajittelualgoritmi

Suorita seuraavat vaiheet kaikille numeroille alkaen oikealla olevasta vähiten merkitsevästä numerosta ja siirtymällä kohti merkittävintä numeroa vasemmalla.

Lajittele elementit laskulajittelulla nykyisen numeron mukaan.
Esimerkki:

Alkuperäinen taulukko:
140, 65, 85, 110, 612, 54, 12, 86

Lajittelu vähiten merkitsevä numero eli paikalle antaa

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

HUOMAUTUS: Koska 612 ilmestyy ennen 12 ja lajittelu tehdään vain yhden numeron kohdalle, siis 612 näkyy ennen 12: ta tämän iteraation jälkeen.

Lajittelu seuraavan numeron mukaan, ts. 10s: n kohdalla, antaa:

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

Lajittelu merkittävimmän numeron mukaan, eli 100-luvun paikassa, antaa:

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

Siirrymme tämän artikkelin kanssa Radix Lajittelu-ohjelmasta C: ssä,

Radix-lajitteluohjelma C.

Tarkastele ensin Radix-lajittelutoimintoa

Radix-lajittelutoiminto:

void radixsort (int-taulukko [], int n) {// Hanki suurin luku, jos haluat tietää numeroiden enimmäismäärän int m = getMax (taulukko, n) int dig // Laskulajittelu suoritetaan jokaiselle (dig = 1) numerolle m / dig> 0 dig * = 10) countSort (taulukko, n, dig)}

Siirrymme tämän artikkelin kanssa Radix Lajittelu-ohjelmasta C: ssä,

Lajittelutoiminto:

void countSort (int-taulukko [], int n, int dig) {int-lähtö [n] int i, määrä [10] = {0} // Tallenna tapahtumien määrä laskussa [] kohteelle (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Kopioi tulostaulukko arr: ksi [], niin että arr [] nyt // sisältää lajitellut numerot (i = 0 i

Edetään eteenpäin, kirjoitetaan C-ohjelma Radix-lajittelun toteuttamiseksi.

Esimerkki:

#include // Toiminto suurimman numeron etsimiseen int getMax (int-taulukko [], int n) {int max = taulukko [0] int i (i = 1 i max) max = matriisi [i] return max} // Funktio Count sort void countSort -toiminnolle (int-taulukko [], int n, int dig) {int-lähtö [n] int i, count [10] = {0} // Tallenna tapahtumien määrä count []: ssa (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Kopioi lähtötaulukko arr: ksi [], niin että arr [] nyt // sisältää lajitellut numerot nykyisen numeron mukaan (i = 0 i 0 dig * = 10) countSort (array, n, dig)} // Funktio tulostaa taulukon tulosta (int arr [], int n) {int i (i = 0 i

Tuotos

Lähtö- Radix-lajitteluohjelma C- Edurekassa

Nyt kun olet suorittanut yllä mainitun ohjelman, olisit ymmärtänyt Radix Sort -ohjelman C: ssä. Näin olemme päässeet tämän artikkelin 'Quicksort in Java' -artikkeliin. Jos haluat oppia lisää, tutustu , luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.