Atlases kārtošana ir šķirošanas tehnika, kas atlasa saraksta vienumu un pēc tam apmaina to ar citu. Tas izvēlas lielāko vienumu un pēc tam apmaina to ar vienumu saraksta augstākajā rādītājā.
Algoritms to dara atkārtoti, līdz saraksts ir sakārtots. Ja neesat pārliecināts, kā darbojas atlases kārtošana, esat nonācis īstajā vietā. Tālāk mēs to izskaidrosim sīkāk, kā arī parādīsim piemēru.
Atlases kārtošana: tuvāks skatījums
Pieņemsim, ka jums ir saraksts: [39, 82, 2, 51, 30, 42, 7]. Lai kārtotu sarakstu, izmantojot atlases kārtošanu, vispirms jāatrod tajā lielākais skaitlis.
Izmantojot šo sarakstu, šis skaitlis ir 82. Apmainiet 82 ar skaitli augstākajā indeksā (tas ir, 7).
Pēc pirmās caurlaides jaunā saraksta secība būs šāda: [39, 7, 2, 51, 30, 42, 82]. Katru reizi, kad algoritms iziet visu sarakstu, to sauc par “caurlaidi”.
Ņemiet vērā, ka sarakstā kārtošanas laikā tiek saglabāts sakārtots apakšsaraksts un nešķirots apakšsaraksts.
par kādu grāmatu es domāju
Saistīts: Kas ir Big-O apzīmējums?
Sākotnējais saraksts sākas ar sakārtotu nulles vienību sarakstu un visu vienumu nešķirotu sarakstu. Pēc pirmās caurlaides tam ir sakārtots saraksts ar tikai 82.
Otrajā piegājienā lielākais skaits nešķirotajā apakšsarakstā būs 51. Šis numurs tiks apmainīts ar 42, lai iegūtu jaunu saraksta secību:
ko nozīmē lte manā tālrunī
[39, 7, 2, 42, 30, 51, 82].
Process tiek atkārtots, līdz viss saraksts ir sakārtots. Tālāk redzamajā attēlā ir apkopots viss process:
Sarkani melnā krāsā norādītie skaitļi parāda tobrīd augstāko saraksta vērtību. Tie, kas ir zaļā krāsā, parāda sakārtoto apakšsarakstu.
Algoritmu analīze
Lai iegūtu šī algoritma sarežģītību (izmantojot Big-O apzīmējumu), veiciet tālāk norādītās darbības.
Pirmajā piegājienā tiek veikti (n-1) salīdzinājumi. Otrajā piespēlē (n-2). Trešajā piegājienā (n-3) un tā tālāk, līdz (n-1) piespēlei, kas ir tikai viens salīdzinājums.
Apkopojot salīdzinājumus, kā norādīts zemāk, tiek parādīts:
(n-1)+ (n-1)+ (n-1)+ ...+ 1 = ((n-1) n)/2.
Tāpēc atlases kārtošana ir O (n2).
Koda ieviešana
Kods parāda funkcijas, kuras varat izmantot atlases kārtošanai, izmantojot Python un Java.
Python:
def selectionSort(mylist):
for x in range(len(mylist) - 1, 0, -1):
max_idx = 0
for posn in range(1, x + 1):
if mylist[posn] > mylist[max_idx]:
max_idx = posn
temp = mylist[x]
mylist[x] = mylist[max_idx]
mylist[max_idx] = temp
Java:
void selectionSort(int my_array[]){
for (int x = 0; x {
int index = x;
for (int y = x + 1; y if (my_array[y] index = y; // find lowest index
}
}
int temp = my_array[index]; // temp is a temporary storage
my_array[index] = my_array[x];
my_array[x] = temp;
}}
Pāreja no atlases kārtošanas uz apvienošanas kārtošanu
Kā parādīja iepriekš minētā algoritma analīze, atlases kārtošanas algoritms ir O (n2). Tam ir eksponenciāla sarežģītība, un tāpēc tas ir neefektīvs ļoti lielām datu kopām.
mūzikas lejupielādētājs google play mūzikai
Daudz labāks izmantojamais algoritms būtu apvienošanas kārtošana ar O (nlogn) sarežģītību. Un tagad jūs zināt, kā darbojas atlases kārtošana, nākamajam šķirošanas algoritmu pētījumu sarakstam vajadzētu būt sapludināšanas kārtošanai.
Kopīgot Kopīgot Čivināt E -pasts 8 labākās vietnes, kur bez maksas lejupielādēt audiogrāmatasAudiogrāmatas ir lielisks izklaides avots un daudz vieglāk sagremojams. Šeit ir astoņas labākās vietnes, kur tās var lejupielādēt bez maksas.
Lasīt Tālāk Saistītās tēmas- Programmēšana
- Programmēšana
- Algoritmi
Džeroms ir MakeUseOf personāla rakstnieks. Viņš aptver rakstus par programmēšanu un Linux. Viņš ir arī kriptogrāfijas entuziasts un vienmēr seko līdzi kriptogrāfijas nozarei.
Vairāk no Džeroma DeividsonaAbonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu