Advertisement
Guest User

Untitled

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