青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coding everyday

編程面試題 https://interview.codeplex.com

C++博客 首頁 新隨筆 聯系 聚合 管理
  12 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
單鏈表的快速排序
單鏈表的快速排序跟數組的排序原理上一致,有一個分區(區分)的函數在一個區間中針對某個標桿值進行區分,比它大的放它后面,比它小的放它前面,并返回它的地址,好對它前面的以及它后面的遞歸。

單鏈表的快速排序跟數組有個明顯的區別,就是指示起始和終止的元素,在一輪之后它們在鏈表中的位子會發生改變,所以需要返回一個新的起始的位置(終止的位置)
我的算法中總是拿后一個的節點作為終止位置,所以它在鏈表中的位子其實是不改變的,所以我只修改了起始位置指向新的起始位置即可。

我的算法是,用2個鏈表,一個放比它大的一個放比它小的,最后接起來,它的位置就是mid,而其實位置就是當初起始的前一個節點在新鏈表中的next。有點拗口,就是說a->start->...->nullptr,這一輪傳進來的是start,那么經過這輪的分區之后,start的位置肯定改變了,對吧?但是a->next的地址沒有改變,即&(a->next),因為start之前的都會原封不動的放在那里。我覺得用指針的地址來處理是這里的關鍵之處吧。


這是一輪partition之前和之后的圖示,之后就對于(begin, mid)和(mid->next, end)進行快速排序即可。

 1 // Problem: sort a singly link list by Quick Sort
 2 node *partition(list &l, node *&begin, node *end = nullptr) {
 3     // if end is the next node, that means it's only one node to sort
 4     if (begin == nullptr || end == begin->next) {
 5         return nullptr;
 6     }
 7 
 8     list small_list, big_list;
 9     node *current = l.root;
10     node *pivot = begin;
11     node **pbegin;          // points to the address of begin
12     node **s_current = &small_list.root, **b_current = &big_list.root;
13 
14     // move previous nodes before 'begin' to small list
15     while (current != begin) {
16         *s_current = current;
17         s_current = &(*s_current)->next;
18         current = current->next;
19     }
20 
21     // pbegin presents the location(address) of begin item, e.g. if (a->next == begin) then pbegin = &a->next;
22     pbegin = s_current;
23 
24     while (begin != end) {
25         if (begin->data < pivot->data) {
26             *s_current = begin;
27             s_current = &(*s_current)->next;
28         }
29         else {
30             *b_current = begin;
31             b_current = &(*b_current)->next;
32         }
33 
34         begin = begin->next;
35     }
36 
37     // pass begin back to quick_sort for next sort action
38     begin = *pbegin;
39 
40     *b_current= end;
41     *s_current = big_list.root;
42     l = small_list;
43     l.print();
44 
45     // current pivot would be the end node for smaller set sorting
46     return big_list.root;
47 }
48 
49 void quick_sort(list &l, node *begin, node *end = nullptr) {
50     if (begin == end) {
51         return;
52     }
53     // mid represents the pivot node which is the next node of the end of the small list
54     node *mid = partition(l, begin, end);
55 
56     if (mid != nullptr){
57         quick_sort(l, begin, mid);
58     }
59 
60     if (mid != nullptr &&
61         mid->next != nullptr) {        
62         quick_sort(l, mid->next, end);
63     }
64 }

代碼
posted on 2013-07-12 13:41 everyday 閱讀(2908) 評論(0)  編輯 收藏 引用 所屬分類: Algorithm
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久青青草原一区二区| 在线国产精品一区| 日韩午夜精品视频| 亚洲精品视频二区| av不卡在线观看| 宅男噜噜噜66一区二区66| 一本色道久久综合一区| 一区二区三区免费观看| 午夜精品在线| 久久一区二区三区av| 欧美精品福利视频| 欧美日韩一区二区三区| 国产欧美不卡| 亚洲精品国产视频| 午夜精品美女自拍福到在线 | 久久综合九九| 欧美成人在线免费观看| 欧美日韩大片| 国产日产欧产精品推荐色 | 亚洲精品日产精品乱码不卡| 在线亚洲欧美| 久久全国免费视频| 亚洲精品四区| 久久深夜福利| 国产精品系列在线播放| 亚洲韩国一区二区三区| 亚洲综合视频一区| 久久全球大尺度高清视频| 一区二区精品在线观看| 久久久久亚洲综合| 国产精品久久久久久久久婷婷 | 国产一区清纯| 亚洲尤物在线视频观看| 欧美成人午夜激情在线| 亚洲一区二区av电影| 欧美激情亚洲一区| 狠狠色噜噜狠狠狠狠色吗综合| 日韩亚洲成人av在线| 另类激情亚洲| 欧美一级视频一区二区| 欧美天堂在线观看| 亚洲麻豆av| 亚洲国产成人不卡| 久久国产精品黑丝| 国产伦精品一区二区三区视频孕妇 | 亚洲人体影院| 欧美~级网站不卡| 永久域名在线精品| 国产精品天天摸av网| 国产精品嫩草99a| 999在线观看精品免费不卡网站| 美女国内精品自产拍在线播放| 亚洲欧美日韩成人| 国产精品亚洲综合天堂夜夜| 亚洲一级在线观看| 日韩亚洲欧美成人| 欧美日韩一区三区| 亚洲少妇一区| 欧美成人一区在线| 久久精视频免费在线久久完整在线看| 中文国产一区| 国产精品亚洲综合久久| 午夜在线视频观看日韩17c| 夜夜躁日日躁狠狠久久88av| 欧美日韩在线亚洲一区蜜芽| 在线视频日韩| 99热在这里有精品免费| 国产精品av免费在线观看| 亚洲欧美日韩综合aⅴ视频| 国产精品99久久久久久久久久久久| 欧美日韩免费高清一区色橹橹| 一区二区三区精品在线| 亚洲一区二区三区精品视频| 国产精品夜色7777狼人| 噜噜噜躁狠狠躁狠狠精品视频| 久久亚洲一区| 亚洲午夜电影| 久久se精品一区精品二区| 在线免费观看成人网| 最近看过的日韩成人| 国产精品r级在线| 看欧美日韩国产| 欧美黑人国产人伦爽爽爽| 亚洲影视中文字幕| 久久精品在线观看| 一本色道婷婷久久欧美| 午夜视频一区二区| 亚洲精品视频一区二区三区| 亚洲午夜视频在线| 亚洲高清在线观看| 中文一区字幕| 亚洲国产精品久久精品怡红院 | 午夜亚洲激情| 亚洲精品乱码久久久久久| 在线视频亚洲欧美| 国精品一区二区| 99精品热视频| 亚洲国产精品一区二区www| 一区二区国产精品| 亚洲激情专区| 久久激五月天综合精品| 亚洲最新在线| 久久综合久久综合久久综合| 亚洲午夜视频在线观看| 久久免费视频在线| 亚洲欧美日本伦理| 欧美精品xxxxbbbb| 免费在线欧美视频| 国产精品久久久久久久久免费樱桃 | 久久伊人精品天天| 欧美性生交xxxxx久久久| 欧美大胆a视频| 国产视频一区在线| 亚洲视频精品| 9l视频自拍蝌蚪9l视频成人| 久久久免费精品视频| 香蕉免费一区二区三区在线观看| 欧美大片免费观看| 欧美成人精品在线观看| 国产一区二区三区高清播放| a4yy欧美一区二区三区| 亚洲伦伦在线| 欧美电影免费观看网站| 欧美成人亚洲成人| 伊人成年综合电影网| 午夜精品一区二区三区在线播放| 一本色道久久综合狠狠躁篇的优点| 欧美ed2k| 亚洲国产日韩综合一区| 亚洲国产精品一区二区第四页av| 欧美一区在线视频| 久久久爽爽爽美女图片| 国内精品视频一区| 久久久久九九视频| 欧美大片91| 日韩视频在线观看| 欧美激情第4页| 亚洲欧洲偷拍精品| 99精品欧美| 国产精品电影观看| 亚洲图片欧洲图片av| 欧美亚洲日本一区| 国产一区二区三区在线免费观看 | 噜噜噜在线观看免费视频日韩| 老司机午夜精品视频| 亚洲成色www久久网站| 麻豆久久婷婷| 亚洲精选中文字幕| 性18欧美另类| 亚洲国产成人av| 欧美日韩不卡| 亚洲免费视频成人| 久久久青草婷婷精品综合日韩| 韩国一区电影| 欧美激情91| 亚洲欧美国产日韩天堂区| 久久亚洲精品一区二区| 亚洲精品日韩在线观看| 欧美午夜寂寞影院| 久久成人精品无人区| 亚洲观看高清完整版在线观看| 亚洲精选成人| 国产伦精品一区二区三区免费迷| 久久久精品五月天| 亚洲另类一区二区| 久久精品国内一区二区三区| 亚洲欧洲视频| 国产日产亚洲精品| 欧美成人免费va影院高清| 亚洲午夜一级| 欧美激情一区三区| 性久久久久久久久| 亚洲精品国产精品国产自| 亚洲精品美女免费| 国产精品尤物福利片在线观看| 欧美在线亚洲| 亚洲精品免费电影| 午夜久久久久| 日韩一级不卡| 悠悠资源网久久精品| 国产精品久久久久久久9999 | 欧美电影免费观看高清| 亚洲一区二区三区四区五区午夜 | 免费黄网站欧美| 亚洲一区二区在线视频 | 久久成人免费视频| 在线一区日本视频| 亚洲激情视频在线| 久久久综合免费视频| 亚洲亚洲精品在线观看 | 欧美精品系列| 久久先锋资源| 欧美亚洲视频一区二区| 99这里只有久久精品视频| 亚洲激情六月丁香| 欧美成人激情在线| 噜噜噜噜噜久久久久久91| 久久久久久亚洲精品中文字幕 | 欧美国产日韩一二三区| 欧美在线视频一区二区三区|