• <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://m.shnenglu.com/shexinwei

            感謝大家的支持

            快速排序(C++)

              1 //版權(quán)聲明:轉(zhuǎn)載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
              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         //如果從后向前已經(jīng)使得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 on 2010-09-12 17:02 馬賽克007 閱讀(4519) 評論(1)  編輯 收藏 引用

            評論

            # re: 快速排序(C++)[未登錄] 2010-09-14 08:52 111

            快速排序!!!???@_@, 好笑  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2010年9月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            導(dǎo)航

            統(tǒng)計

            公告

            QQ:306334649 本博客所發(fā)代碼皆為作者原創(chuàng),大家可以隨便使用。

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            我的博客

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            色欲久久久天天天综合网精品 | 精品久久久中文字幕人妻| 久久人人爽人爽人人爽av| 国产精品久久久久久久久久影院| 久久久久亚洲AV片无码下载蜜桃| 国产精品久久自在自线观看| 久久久精品波多野结衣| 97精品国产97久久久久久免费| 国产午夜免费高清久久影院| 久久影院久久香蕉国产线看观看| 四虎国产精品成人免费久久| 国产精久久一区二区三区| 区久久AAA片69亚洲| 精品久久久久一区二区三区| 77777亚洲午夜久久多人| 精品久久综合1区2区3区激情 | 久久国产美女免费观看精品| 久久婷婷五月综合国产尤物app| 久久国产精品免费一区二区三区| 麻豆成人久久精品二区三区免费| 日本欧美国产精品第一页久久| 国产99久久精品一区二区| 久久国产免费直播| 国产成人综合久久精品红| 精品综合久久久久久88小说| 久久国产亚洲精品麻豆| 久久99精品久久久大学生| 国产精品久久婷婷六月丁香| 免费精品久久久久久中文字幕| 久久精品国产黑森林| 国产成人香蕉久久久久| 国产毛片久久久久久国产毛片| 国产国产成人久久精品| 久久综合久久综合久久| 久久se精品一区二区| 精品久久人妻av中文字幕| 色偷偷久久一区二区三区| 久久精品一本到99热免费| 久久国产精品77777| 国内精品久久人妻互换| 久久精品国产一区|