Johdanto lajittelusta C ++: ssa
Aineistokokoelman tilaaminen, lajittelu auttaa järjestämään tietueessa olevat elementit tilaussuhteen perusteella. Harkitse tiedostoa, joka sisältää paljon tietoa. Listaan pääsemiseksi tietueesta on oltava avainkenttä osoittamaan elementin nykyinen sijainti. Harkitse esimerkiksi tietokannan nimiluetteloa, se voidaan lajitella aakkosjärjestykseen. Lajittelu asetti tärkeän roolin tietokoneiden ja tekniikan alalla. Katsotaanpa lisätietoja tässä artikkelissa.
Mikä on lajittelu C ++: ssa?
Lajittelu on peruskäsite, jota ohjelmoija tai tutkija käyttää tarvittavien syötteiden lajitteluun. Monimutkaisuusjärjestys annetaan nollalla (N * log (N)). Tulojen lajittelu on helpompaa ratkaista monia ongelmia, kuten etsintä, enimmäis- ja vähimmäisosio. Vaikka lajittelu järjestää datan järjestyksessä, prosessin tehokkuus on erittäin tärkeä, joka perustuu kahteen kriteeriin: - Aika ja muisti, joita tarvitaan lajittelun suorittamiseen annetulle tiedolle. Aika mitataan laskemalla käytettyjen avainten vertailut. Lajitteluun on saatavana monia algoritmeja. Lajittelu C ++: ssa erotetaan yleensä kahteen tyyppiin:
- Sisäinen lajittelu
- Ulkoinen lajittelu
Syntaksi ja esimerkki
Syntaksi:
C ++ käyttää algoritmeihinsa sisäänrakennettua lajittelu () -toimintoa lajittelemaan säiliöt kuten vektorit, taulukot.
Lajittele (taulukko, taulukko + koko);
esimerkkejä:
#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)
lähtö:
Kuinka se toimii?
Aluksi otamme pikalajittelun, jota pidetään tärkeänä menetelmänä useissa lajittelulajeissa. Matriisin perus- lajittelu tapahtuu Quicksort-lähestymistavalla. Lajitteluun on erilaisia tapoja, jokaisen tekniikan tarkoitus on sama kuin kahden elementin vertaaminen ja vaihtaminen väliaikaiseen muuttujaan. Tässä artikkelissa keskustelemme tärkeimmästä lajittelussa käytetystä lajittelusta. Seuraavat ovat:
- Kuplalajittelu
- Lisäyslajittelu
- Pikalajittelu
- Valinta Lajittele
On olemassa Merge Sort, radix-lajittelu, nauhalajittelu, joista voimme keskustella myöhemmin. Ensinnäkin, menemme Bubble-lajitteluun.
1. Kuplalajittelu
Kuplalajittelu on yksi yksinkertaisimmista lajittelumenetelmistä, jota voimme käyttää sovelluksissa. Tässä tekniikassa järjestetään peräkkäisiä vaihtimia lajiteltavien tietueiden kautta. Jokaisessa vaiheessa se vertaa avainta dataan ja vaihtaa elementtejä ellei halutussa järjestyksessä. Lajittelu tapahtuu vierekkäisillä elementeillä kerrallaan, vain yksi elementti sijoitetaan lajiteltuun paikkaan vaihdon jälkeen.
Esimerkki: Tarkastellaan lajittelematonta taulukkoa A () = (6, 2, 4, 7, 1)
6 | 2 | 4 | 7 | 1 |
A (0) | A (1) | A (2) | A (3) | A (4) |
Vaihe 1: Vertaamalla A (0)> A (1), jos ehto on tosi, vaihda elementti (6> 2) true, aseta 2 kohtaan A (0). Samoin kaikki vaiheet suoritetaan samalla tavalla, kunnes taulukko lajitellaan.
Nyt taulukko on A () = (2, 6, 4, 7, 1)
Vaihetta 2: 6 verrataan neljään. Koska 6 on suurempi kuin 4. Siksi 6 ja 4 vaihdetaan.
Nyt taulukko on A () = (2, 4, 6, 7, 1)
Vaihe 3: Elementtiä 6 verrataan 7. Koska elementtiä 6 <2 ja elementit ovat nousevassa järjestyksessä, elementtejä ei vaihdeta.
Lajiteltu taulukko on A () = (2, 4, 6, 7, 1).
Jatka prosessia, kunnes taulukko on lajiteltu.
2. Lisäyslajittelu
Tässä tekniikassa aloitamme toisella dataelementillä olettaen, että ensimmäinen elementti on jo lajiteltu ja vertailu suoritetaan toisen elementin kanssa ja vaihetta jatketaan toisen seuraavan elementin kanssa. N-elementtiryhmässä on välttämätöntä, että N-1-passilla olisi lajiteltu elementti.
Tarkastellaan taulukkoa A () = (8, 3, 6, 1)
8 | 3 | 6 | 1 |
Vaihe 1: Ensimmäinen elementti etsii taulukon suurimman vaihdettavan elementin. Jos se on suurempi, se pysyy samana ja siirretään toiseen elementtiin, tässä 8 on suurempi kuin kaikki, vaihtotapaa ei tehdä.
8 | 3 | 6 | 1 |
Vaihe 2: Vaihtaminen toisen elementin kanssa
3 | 8 | 6 | 1 |
Vaihe 3: Vaihtaminen kolmannen elementin kanssa
3 | 6 | 8 | 1 |
Vaihe 4: Vaihtaminen neljännen elementin kanssa
1 | 3 | 6 | 8 |
3. Pikalajittelu
Tämä tekniikka seuraa jako- ja valloitusalgoritmia, ja sitä pidetään erittäin tehokkaana ja nopeampana valtaville ryhmille. Ne on jaettu kolmeen alajaksoon: vasen, oikea ja keskimmäinen. Keskimmäisellä elementillä on yksi arvo ja se on nimeltään nivel. Mekanismi menee näin, vasemman segmentin elementissä ei tulisi olla avainta, joka on suurempi kuin keskielementti, eikä oikeassa olevassa elementissä ole avainta, joka on pienempi kuin keskielementti. Aloitetaan nyt kuva lajitteluprosessista. Quicksort käyttää rekursiivista konseptia alaosaa lajitellessaan. Taulukko on jaettu alaosaan, taas vasen ja oikea segmentti osioidaan valloittamalla. Tässä esimerkissä ottaen huomioon viimeisen elementin on kääntyvä ja ensimmäisen elementin oletetaan olevan matala. Mieti taulukkoelementti
49 | 22 | 11 | 16 | 56 | 30 |
Oikeimmassa osassa elementti on nivel-elementti = 30
16 | 22 | 11 | 30 | 56 | 49 |
Niveltapaa suurempi elementti sijoitetaan vasemmalle, pienempi oikealle.
16 | 22 | 11 | 56 | 49 |
Osoitin asetetaan nivelosaan ja jaetaan niveltavan ympärille.
11 | 22 | 16 | 56 | 49 |
Alaosat lajitellaan yksittäin.
11 | 16 | 22 | 30 | 49 | 56 |
Viimeinkin saimme lajitellun taulukon.
4. Valintalajittelu
Tätä tekniikkaa kutsutaan myös vaihtolajitteluksi, joka suorittaa kaksoisoperaatiohaun ja -lajittelun. Toteutuksessa tapahtuu suora valintalajittelu alla määritellyn mukaisesti. Tässä vaaditaan yksilöimään taulukossa oleva pienin elementti ja tämä elementti lajitellaan ensimmäiseen i: nteen sijaintiin. Seuraavaksi tunnistetaan toinen pienin elementti ja se lajitellaan toiseen sijaintiin. Valintaluokka poistuu silmukastaan, kun lajittelematon alaosa tyhjenee. Ajan monimutkaisuus annetaan muodossa O (n 2 ).
Mieti seuraavaa taulukkoa:
63 | 26 | 13 | 23 | 12 |
1. Löydä pienin elementti ja aseta se alkuun ja se vaihdetaan asennon kanssa.
12 | 26 | 13 | 23 | 63 |
2. Toinen elementti a (1) tunnistetaan verrattuna minimielementtiin ja asetetaan se toiseen asentoon, samoin, siirto jatkuu.
12 | 13 | 26 | 23 | 64 |
Lopullinen lajiteltu tulos
12 | 13 | 23 | 26 | 64 |
johtopäätös
Lopuksi, tässä artikkelissa keskityttiin käsitteiden lajitteluun ja niiden toimintamekanismeihin. Kaikki nämä lajittelutekniikat käyttävät rinnakkaiskäsittelykonsepteja. Lajittelu muodostaa keskeisen rakennuslohkon algoritmien jäsentämisessä ratkaisemaan todellisessa maailmassa esiintyvät dataongelmat lajittelemalla arvojoukot vaatimusten mukaan.
Suositellut artikkelit
Tämä on opas lajitteluun C ++: ssa. Tässä keskustellaan johdannosta ja syntaksista esimerkkien kanssa sekä miten se toimii. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -
- Lajittelu taulukossa
- Iterator C ++: ssa
- C-taulukon toiminnot
- Kasa Lajittele C: ssä
- Kuinka lajittelu tapahtuu PHP: ssä?
- Heap Sort Pythonissa
- Iterator Java
- C ++: n 11 tärkeintä ominaisuutta ja hyötyä
- Iteraattori Pythonissa | Edut ja esimerkit Pythonista