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

---key = A(j)

---i = j - 1

---while i > 0 and A(i) > key

-------A(i+1) = A (i)

-------i = i - 1

---A (i+1) = key



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)


všeč(0) ni všeč(0) spam(0)
 
algo 19. okt 2015 20:35:55 Pridružen od:
19. okt 2015
2 objav
0 0 0
#2

Tako kot se mi je zdlo, niso to primerjave ampak ziher je ziher, zato sem raje vprašal.


všeč(0) ni všeč(0) spam(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).


všeč(3) ni všeč(0) spam(0)
Colorless green ideas sleep furiously.
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se