• <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>

            馬賽克007歡迎你

            htt://shexinwei.blogbus.com

            http://www.shnenglu.com/shexinwei

            感謝大家的支持

            置頂隨筆

            [置頂]快速排序(C++)

              1 //版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
              2 //http://shexinwei.blogbus.com/logs/74827291.html
              3 
              4 
              5 /*
              6 
              7 Subject:      Quick sort
              8 
              9 Author:       shexinwei
             10 
             11 School:       xidian university
             12 
             13 Date:         2010-09-12
             14 
             15 Laguage:      C++
             16 
             17 IDE | Tool:   GCC
             18 
             19 Version:      1.0
             20 
             21 Modify Time:  2010-09-12
             22 
             23 */    
             24 
             25 #include <iostream>
             26 
             27 using namespace std;
             28 
             29 int sort(int begin,int end,int data[],int n);
             30 
             31 int recurs(int begin,int end,int data[],int n);
             32 
             33 int print(int data[],int n);
             34 
             35 int main()
             36 
             37 {
             38 
             39     int data[] = {20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
             40 
             41     //打印初始序列
             42 
             43     print(data,20);
             44 
             45     //遞歸排序
             46 
             47     recurs(0,19,data,20);
             48 
             49     //打印最終序列    
             50 
             51     print(data,20);
             52 
             53     cout<<endl;
             54 
             55         return 1;
             56 
             57 }
             58 
             59  
             60 
             61 //打印序列
             62 
             63 int print(int data[],int n)
             64 
             65 {
             66 
             67     for(int i = 0;i<n;i++)
             68 
             69         cout<<data[i]<<" ";
             70 
             71     cout<<endl;
             72 
             73     return 1;
             74 
             75 }
             76 
             77  
             78 
             79  
             80 
             81 int sort(int begin,int end,int data[],int n)
             82 
             83 {
             84 
             85     //選擇最后一位做初始的中樞
             86 
             87     int pos = end;
             88 
             89     int key  = data[end];
             90 
             91     //索引初始化
             92 
             93     int front = begin;
             94 
             95     int last = end;
             96 
             97     for(;front != last;front++)
             98 
             99     { //向后查找
            100 
            101  
            102 
            103         if((data[front] < key) || (data[front] == key)) continue;
            104 
            105         else
            106 
            107         { //遇到比中樞值大的元素,交換位置,修改pos的值,并開始從后向前找
            108 
            109             data[pos] = data[front];
            110 
            111             pos = front;
            112 
            113             //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            114 
            115             data[pos] = key;     
            116 
            117             //輸出改變一次后的序列
            118 
            119             print(data,n);
            120 
            121             for(;front != last;last--)
            122 
            123             {//從后向前查找
            124 
            125                 if((data[last] > key)||(data[last] == key)) continue;
            126 
            127                 else
            128 
            129                 { //遇到比中樞值小的元素,交換位置,修改pos值,并重新開始從前向后查找
            130 
            131                    data[pos] = data[last];
            132 
            133                    pos = last;
            134 
            135                  //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            136 
            137                        data[pos] = key;
            138 
            139                  //打印修改以后的序列
            140 
            141                    print(data,n); 
            142 
            143                  //重新開始從前向后查找
            144 
            145                    break;
            146 
            147                 }
            148 
            149             }
            150 
            151             
            152 
            153         }
            154 
            155         //如果從后向前已經使得front==last,那么一趟分割完畢
            156 
            157         if(front == last) break;
            158 
            159     }
            160 
            161     data[pos] = key;
            162 
            163     return pos;
            164 
            165 }
            166 
            167 int recurs(int begin,int end,int data[],int n)
            168 
            169 {
            170 
            171     //遞歸出口
            172 
            173     if((begin == end) || (begin > end)) return 1;
            174 
            175     else
            176 
            177     {
            178 
            179     //做分割
            180 
            181     int index = sort(begin,end,data,n);
            182 
            183     //前一部分遞歸
            184 
            185     recurs(begin,index-1,data,n);
            186 
            187     //后一部分遞歸
            188 
            189     recurs(index+1,end,data,n);
            190 
            191     }
            192 
            193 }

            posted @ 2010-09-12 17:02 馬賽克007 閱讀(4527) | 評論 (1)編輯 收藏

            僅列出標題  
            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            公告

            QQ:306334649 本博客所發代碼皆為作者原創,大家可以隨便使用。

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            我的博客

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            伊人热热久久原色播放www| 久久99精品久久久久子伦| 久久精品国产亚洲7777| 久久成人小视频| 久久午夜羞羞影院免费观看| 国内精品久久国产大陆| 久久天天婷婷五月俺也去| 久久久国产精品亚洲一区| 久久国产精品波多野结衣AV | 国产精品久久久天天影视| 91超碰碰碰碰久久久久久综合| 久久久久人妻精品一区三寸蜜桃 | 久久久久久精品久久久久| 国产精品99久久免费观看| 亚洲AⅤ优女AV综合久久久| 91久久婷婷国产综合精品青草| 99久久香蕉国产线看观香| 久久精品成人影院| 久久99精品国产麻豆蜜芽| 99久久婷婷免费国产综合精品| 久久精品中文字幕一区| 思思久久99热只有频精品66| 久久99精品久久久久久秒播| 国产精品美女久久久| 国产高潮国产高潮久久久| 久久精品一本到99热免费| 伊人久久精品影院| 欧美与黑人午夜性猛交久久久| 久久亚洲国产欧洲精品一| 国产99精品久久| 久久精品国产亚洲精品2020 | 国产精品丝袜久久久久久不卡| 99久久精品日本一区二区免费| 久久精品99久久香蕉国产色戒| 欧美国产成人久久精品| 成人综合久久精品色婷婷| 亚洲一区精品伊人久久伊人| 亚洲色欲久久久久综合网| 久久强奷乱码老熟女网站| 久久精品aⅴ无码中文字字幕不卡| 亚洲国产成人久久一区久久|