| Prosim za HITRO POMOČ pri algoritmu | ||
|---|---|---|
|
algo
19. okt 2015 19:10:43
Pridružen od: 19. okt 2015 2 objav 0 0 0 |
#1
Imam spodnji algoritem (insertion sort) A=(array številk) for j = 2:n Vprašanje je, koliko številskih primerjav se v postopku izvede (za podan niz ampak to ni pomembno)? Definicija številskega primerjanja: je vsak izraz oblike x>y,x=y,y<y za neka števila x,y. Zdaj me pa zanima ali štejem le primerjanja za for (j=2:n) ter pri (while i > 0 and A(i) > key) ali štejem tudi key = A(j), i = j - 1 itd. A se to tudi šteje pod številsko primerjanje? Ma meni to pomeni, da zapišemo v spremenljivko vrednost, ne pa da jo primerjamo ali se motim? (časa za oddajo imam le še 2h zato prosim, da mi čimprej svetujete) |
|
|
algo
19. okt 2015 20:35:55
Pridružen od: 19. okt 2015 2 objav 0 0 0 |
||
|
blazs
20. okt 2015 12:32:08
Pridružen od: 10. feb 2015 7 objav 4 0 0 |
#3
Tisto drugo se kličejo prirejanja. Tudi število teh (in drugih) operacij je "približno" toliko kot primerjanj (znotraj konstantnega faktorja). V splošnem je število primerjav enako številu inverzij, če gledaš na A=(a1,...,an) kot na permutacijo (ki je podana implicitno). (To je res, če so v A sama različna števila; velja pa podoben razmislek, če se števila ponavljajo.) Če ima A n elementov in če so "narobe" urejeni, potem je vsak par elementov v inverziji, kar pokaže, da lahko insertion sort naredi n*(n-1)/2 primerjav (po domače, da ima kvadratno časovno zahtevnost). Colorless green ideas sleep furiously.
|
|