Guest User

Untitled

a guest
Jan 24th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.58 KB | None | 0 0
  1.  
  2. 1
  3. Programski jezik Java
  4. Interno gradivo za predmet
  5. Algoritmi in programski jeziki (4. letnik)
  6. Sortirni algoritmi
  7. (nepre
  8. č
  9. iš
  10. č
  11. eno besedilo)
  12. Urejanje
  13. •
  14. Metode sortiranja razvrš
  15. č
  16. amo v dve skupini,
  17. in sicer na notranje in zunanje metode.
  18. •
  19. Notranje sortiranje
  20. •
  21. kadar se podatki nahajajo v hitrih pomnilnikih z
  22. naklju
  23. č
  24. nim dostopom,
  25. •
  26. Zunanje sortiranje
  27. •
  28. podatki se nahajajo v po
  29. č
  30. asnejših toda ve
  31. č
  32. jih
  33. zunanjih pomnilnikih
  34. •
  35. trdi diski, ki temeljijo na mehansko gibljivih
  36. napravah z zaporednim dostopom
  37. Urejanje
  38. •
  39. Pri algoritmih za sortiranje nas vedno zanima tudi
  40. kako hitro
  41. uredijo elemente in koliko prostora potrebujejo za
  42. sortiranje.
  43. •
  44. Lo
  45. č
  46. imo algoritme, ki sortirajo elemente
  47. •
  48. na mestu,
  49. •
  50. zavzamejo samo toliko prostora, kolikor ga potrebuj
  51. ejo
  52. elementi
  53. •
  54. ki elemente prestavljajo na druge lokacije,
  55. •
  56. potrebujejo ve
  57. č
  58. prostora.
  59. •
  60. Glede na
  61. č
  62. asovno zahtevnost algoritmov pa lo
  63. č
  64. imo
  65. •
  66. preprostejše,
  67. •
  68. elemente uredijo v
  69. č
  70. asu O(n
  71. 2
  72. ), tem pravimo navadne
  73. metode
  74. •
  75. hitrejše
  76. •
  77. elemente uredijo v
  78. č
  79. asu O(n log(n)),
  80. č
  81. e je
  82. n število elementov
  83. 2
  84. Urejanje
  85. •
  86. Kateri algoritem za sortiranje bomo izbrali, pa je
  87. seveda odvisno tudi od števila elementov.
  88. •
  89. Navadne metode
  90. •
  91. preprostejše, asimptoti
  92. č
  93. no po
  94. č
  95. asnejše
  96. •
  97. na majhnem številu elementov prav zaradi svoje
  98. preprostosti veliko bolj u
  99. č
  100. inkovite, kot pa metode, ki
  101. elemente uredijo v logaritemskem
  102. č
  103. asu
  104. Zunanje sortiranje
  105. •
  106. Algoritme ne moremo uporabiti,
  107. č
  108. e podatkov, ki jih
  109. moramo urediti, ne moremo imeti v hitrem
  110. pomnilniku, ampak na zunanjih pomnilnih
  111. napravah, za katere vemo, da moramo do njih
  112. dostopati zaporedno.
  113. •
  114. Na zunanjih pomnilnikih podatke shranjujemo v
  115. datotekah, kjer je v vsakem trenutku dosegljiv le
  116. en podatek. To pa je kar huda omejitev glede na
  117. to, da v polju lahko vsak trenutek dosežemo
  118. katerikoli element.
  119. •
  120. To rešujemo z uporabo sortirnih metod, ki jim pravi
  121. mo
  122. zunanje metode.
  123. Zunanje sortiranje
  124. •
  125. Pri zunanjih metodah naložimo le majhen del podatko
  126. v v
  127. glavni pomnilnik, uporabimo notranjo sortirno metod
  128. o in nato
  129. shranimo podatke na zunanje pomnilnike. Urejene del
  130. e nato
  131. zlijemo skupaj tako, da uporabimo eno od variant so
  132. rtiranja z
  133. zlivanjem, ki ga imenujemo tudi Merge sort.
  134. •
  135. Č
  136. eprav smo metodo zlivanja opredelili kot zunanjo me
  137. todo,
  138. je hkrati tudi notranja metoda in jo lahko uporablj
  139. amo za
  140. sortiranje polj. Tudi to metodo lahko priredimo tak
  141. o, da
  142. elemente zamenjujemo na mestu, torej ne potrebujemo
  143. dodatnega prostora. Vendar je v tem primeru metoda
  144. v
  145. primerjavi z ostalimi notranjimi metodami precej
  146. neu
  147. č
  148. inkovita.
  149. Č
  150. e pa ji ponudimo malo dodatnega prostora,
  151. postane ena izmed najhitrejših med notranjimi metod
  152. ami.
  153. 3
  154. Zunanje sortiranje
  155. •
  156. Metoda Sortiranja z zlivanjem sortira elemente
  157. dobesedno z zlivanjem dveh zaporedij v enega, pri
  158. č
  159. emer izbira med trenutno dosegljivimi elementi.
  160. To pa pomeni, da morata biti zaporedji urejeni, da
  161. potem lahko s pomo
  162. č
  163. jo primerjanja prvih
  164. elementov zaporedja dobimo eno urejeno
  165. zaporedje.
  166. •
  167. Metoda temelji na strategiji deli in vladaj.
  168. Zaporedje najprej razbije na podzapredja, nato pa
  169. jih toliko
  170. č
  171. asa zliva skupaj, da dobimo eno urejeno
  172. zaporedje.
  173. Opis algoritma
  174. •
  175. Algoritem uporablja paradigmo
  176. deli in vladaj
  177. .
  178. Za
  179. č
  180. ne s podtabelami velikosti 1, ki so same
  181. po sebi seveda urejene. Nato za
  182. č
  183. ne z
  184. zlivanjem(in sprotnim urejanjem) parov
  185. podtabel v ve
  186. č
  187. jo podtabelo in te tabele nato
  188. zopet zliva v ve
  189. č
  190. je, dokler ne zlije vseh
  191. elementov tabele v eno urejeno tabelo.
  192. 4
  193. Notranje sortiranje
  194. •
  195. Vsi algoritmi za urejanje (sortiranje) podatkov
  196. slonijo na eni od treh osnovnih tehnik:
  197. 
  198. izbiranju
  199. 
  200. vstavljanju
  201. 
  202. premenami
  203. Urejanje z vstavljanjem
  204. •
  205. Algoritem sortiranja z vstavljanjem uredi elemente
  206. tako, da po vrsti jemlje elemente in vsakega vstavi
  207. na svoje mesto.
  208. •
  209. Za
  210. č
  211. ne z drugim elementom in ga primerja s prvim.
  212. Č
  213. e je manjši od prvega, potem ga postavi na prvo
  214. mesto, sicer na drugo. Nato vzame tretji element
  215. in ga primerja z drugim.
  216. Č
  217. e je manjši od drugega,
  218. ga primerja še s prvim, in v odvisnosti od rezultata
  219. vstavi tretji element na svoje mesto.
  220. •
  221. Ta postopek ponavlja do zadnjega elementa.
  222. Opis algoritma
  223. 1.
  224. Spremenljivki i priredi 1;
  225. 2.
  226. i-ti element primerjaj z elementi pred njim,
  227. za
  228. č
  229. enši z elementom na mestu i-1. Dokler ne
  230. naletiš na manjšega oziroma na za
  231. č
  232. etek polja,
  233. vsak element prestavi za eno mesto naprej;
  234. 3.
  235. Vstavi i-ti element na svoje mesto;
  236. 4.
  237. Spremenljivki i priredi i+1;
  238. •
  239. Ponavljaj korake 2, 3 in 4, dokler spremenljivka i
  240. ne preseže števila elementov.
  241. 5
  242. Psevdokoda
  243. •
  244. Algoritem navadnega vstavljanja lahko
  245. zapišemo takole:
  246. •
  247. for(i=1; i<a.length; i++){
  248. x=a[i];
  249. x vstavi na pravo mesto v a
  250. 1
  251. ...a
  252. i-1
  253. }
  254. Metoda
  255. •
  256. public static void urejanjeVstavljanje(Element[] a)
  257. {
  258. int i, j;
  259. Element x;
  260. for(i=1; i<a.length; i++){
  261. if(a[i]>a[i-1]) continue;
  262. //izboljšava
  263. x=a[i];
  264. j=i-1;
  265. while(j>=0 && x<(a[j])){
  266. a[j+1]=a[j];
  267. j--;
  268. }
  269. a[j+1]=x;
  270. }
  271. }
  272. Primer
  273. •
  274. Podana je tabela elementov: 12,1,7,33,14,6,77,8,21,10
  275. 0.
  276. •
  277. Napiši, kako se spreminja vsebina tabele pri urejanju z
  278. vstavljanjem.
  279. 
  280. 12,
  281. 1
  282. ,7,33,14,6,77,8,21,100.
  283. 1,12,
  284. 7
  285. ,33,14,6,77,8,21,100
  286. 1,7,12,
  287. 33
  288. ,14,6,77,8,21,100
  289. 1,7,12,33,
  290. 14
  291. ,6,77,8,21,100
  292. 1,7,12,14,33,
  293. 6
  294. ,77,8,21,100
  295. 1,6,7,12,14,33,
  296. 77
  297. ,8,21,100
  298. 1,6,7,12,14,33,77,
  299. 8
  300. ,21,100
  301. 1,6,7,8,12,14,33,77,
  302. 21
  303. ,100
  304. 1,6,7,8,12,14,21,33,77,
  305. 100
  306. 1,6,7,8,12,14,21,33,77,
  307. 100
  308. 6
  309. Analiza navadnega vstavljanja
  310. •
  311. Č
  312. e upoštevamo, da so vse permutacije
  313. elementov enako verjetne, lahko ocenimo
  314. število C
  315. i
  316. primerjanj med elementi. V i-tem
  317. pogrezanju je primerjanj najve
  318. č
  319. i-1 in
  320. najmanj 1, torej v povpre
  321. č
  322. ju i/2. Število M
  323. i
  324. premikov oziroma prirejanj elementov pa je
  325. C
  326. i+2
  327. (
  328. č
  329. e upoštevamo tudi prirejanje vrednosti
  330. stražarju).
  331. Analiza navadnega vstavljanja
  332. •
  333. Celotno število primerjanj in premikov:
  334. •
  335. najmanj C
  336. min
  337. =n-1 M
  338. min
  339. =2(n-1)
  340. •
  341. povpre
  342. č
  343. no C
  344. ave
  345. =1/4(n
  346. 2
  347. +n-2) Mave=1/4(n
  348. 2
  349. +9n-10)
  350. •
  351. najve
  352. č
  353. C
  354. max
  355. =1/2(n
  356. 2
  357. +n)-1 M
  358. max
  359. =1/2(n
  360. 2
  361. +3n-4)
  362. •
  363. Najmanjše število primerjanj in premikov dobimo v
  364. primeru, ko so elementi že urejeni, najve
  365. č
  366. je pa v
  367. primeru, ko so elementi na za
  368. č
  369. etku nasprotno
  370. urejeni. Kar bi logi
  371. č
  372. no tudi pri
  373. č
  374. akovali, pa vendar
  375. pri vseh algoritmih to ne drži. Vidimo, da je
  376. algoritem tudi stabilen, saj medsebojni vrstni red
  377. elementov z enakimi klju
  378. č
  379. i ostane nespremenjen.
  380. Analiza navadnega vstavljanja
  381. •
  382. Algoritem navadnega vstavljanja seveda
  383. lahko izboljšamo, saj je kon
  384. č
  385. no zaporedje, v
  386. katerega vstavljamo nove elemente, že
  387. urejeno. Kar pa pomeni, da bi lahko uporabili
  388. kakšno hitrejšo metodo za iskanje mesta za
  389. vstavljanje naslednjega elementa. Na primer
  390. dvojiško iskanje, kjer naredimo primerjavo z
  391. elementom na sredi kon
  392. č
  393. nega zaporedja in
  394. nadaljujemo z razpolavljanjem dokler ne
  395. najdemo ustreznega mesta za vstavljanje.
  396. 7
  397. Analiza navadnega vstavljanja
  398. •
  399. To lastnost ima algoritem, ki ga imenujemo
  400. Sortiranje z vstavljanjem s padajo
  401. č
  402. im
  403. prirastkom
  404. oziroma Shell sortiranje po
  405. njegovem avtorju.
  406. •
  407. Lahko re
  408. č
  409. emo, da ima algoritem Navadnega
  410. izbiranja prednost pred Navadnim
  411. vstavljanjem, je pa Navadno vstavljanje
  412. nekoliko hitrejše takrat, ko so elementi na
  413. za
  414. č
  415. etku že sortirani ali pa skoraj urejeni.
  416. Urejanje z izbiranjem
  417. •
  418. Sortiranje z Navadnim izbiranjem temelji na
  419. na
  420. č
  421. elu iskanja oziroma izbiranja
  422. najmanjšega elementa.
  423. •
  424. V vsakem prehodu skozi polje poiš
  425. č
  426. emo
  427. najmanjši element in ga postavimo na prvo
  428. mesto, kar pomeni, da so za
  429. č
  430. etni elementi
  431. polja urejeni in teh v naslednjih prehodih ne
  432. preverjamo ve
  433. č
  434. .
  435. Opis algoritma
  436. 1.
  437. Najdi najmanjši element in ga zamenjaj s
  438. prvim elementom polja.
  439. 2.
  440. Med ostalimi elementi najdi drugi najmanjši
  441. element v polju in ga zamenjaj z drugim
  442. elementom polja.
  443. 3.
  444. Ponavljaj do predzadnjega elementa polja.
Advertisement
Add Comment
Please, Sign In to add comment