[理工] [資結] 102交大資演 第9題

作者: kurc (辛拉麵)   2015-01-28 13:19:38
題目如下:
http://i.imgur.com/gfkrFsm.png
http://i.imgur.com/X33UFng.png
一開始看以為是quicksort
但是下去追蹤後完全不是這一回事
整個都沒排序到的感覺Orz
我自己做的部分: (這部分是錯的,因為沒注意到第二個else if沒i++的結果)
第一次partiton,pivot是4,結束後 1 0 0 1 4 2 3 1 0 2
↑ ↑
low(值為-1) high(指向data[5])
補充正解(感謝galapous大提醒盲點)
第一次 parition 後:4 1 3 2 0 1 0 0 1 2 low=-1 high=1
第二次:       3 2 2 1 1 1 0 0 0 low=1 high=6
第三次:       3 2        low=0 high=2
第四次:             0 0 0 low=-1 high=3 
final content : 4 3 2 2 1 1 1 0 0 0 (Ans(1))
partition invoked: 4次 (Ans(2))
這個是由大排到小的quick sort: 最差時間複雜度 size^2 (Ans(3))
附上昨天怒打的驗證XD http://goo.gl/ePgIJ0
給大家參考囉,如果有問題可以再討論
作者: APE36 (PT鄉民)   2015-01-28 13:26:00
pivot取中間值後就開始sort,比較好奇是(3)是否也是同樣Quick的Worst Case
作者: galapous (墨)   2015-01-28 14:29:00
是quick sort吧,細節有點不同但原理一樣,會覺得怪應該是因為第一次選到的是worst case第一次做完4應該在第一個哦,注意他for loop中有個casei不會變
作者: kurc (辛拉麵)   2015-01-28 15:03:00
喔喔感謝G大! 整個突破盲點! 我完全沒發現第二個if沒有++i這樣就是標準的quick sort沒錯,感恩~
作者: AgentSkye56 (大安周渝民)   2015-01-28 21:04:00
還是看不懂QQ"有人大大會詳細的做法嗎~~
作者: galapous (墨)   2015-01-28 22:16:00
trace code你會發現他把比pivot大的擺在pivot左邊小的放右邊
作者: killerw74 (killerw74)   2015-01-29 02:08:00
想問大家 這題第二題寫多少...
作者: galapous (墨)   2015-01-29 09:30:00
5

Links booklink

Contact Us: admin [ a t ] ucptt.com