為什么快速排序不適合用鏈表 雙向鏈表的排序?
雙向鏈表的排序?由于它是按選擇排序的,在與當(dāng)前節(jié)點交換最小節(jié)點后,即調(diào)用reverse()后,當(dāng)前節(jié)點應(yīng)該移回一個,這樣您就可以刪除P=I,因為外部for循環(huán)已經(jīng)有P=P->pnext將單向鏈表展
雙向鏈表的排序?
由于它是按選擇排序的,在與當(dāng)前節(jié)點交換最小節(jié)點后,即調(diào)用reverse()后,當(dāng)前節(jié)點應(yīng)該移回一個,這樣您就可以刪除P=I,因為外部for循環(huán)已經(jīng)有P=P->pnext
將單向鏈表展開為雙向鏈表,然后按照快速排序法進(jìn)行排序。這需要o(n)空間,比數(shù)組o(logn)大得多,但可以保證o(nlogn)完成
刪除節(jié)點就是把一個節(jié)點從鏈表中取出,釋放內(nèi)存,連接前后節(jié)點,序列號就是節(jié)點所在的位置,比如頭節(jié)點是1,下一個頭部節(jié)點是2,依此類推。該值是任意數(shù)字。例如,每個節(jié)點都有一個int類型的變量,根據(jù)該變量的值從小到大或從大到小排序
~]:例如。
將列表節(jié)點視為一個人,列表指針視為一個人的手(左手為向前指針,右手為向后指針)。非循環(huán)單向列表是這樣的:幾個人排成一行,每個人舉起右手指向右邊的人,最右邊的人的右手指向空中(空)。