• <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 on 2010-09-12 17:02 馬賽克007 閱讀(4516) 評論(1)  編輯 收藏 引用

            評論

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

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

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

            導航

            統計

            公告

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

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            我的博客

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产成人精品久久亚洲高清不卡 | 久久国产成人亚洲精品影院| 久久久精品国产| 久久久久人妻一区精品色| 久久精品视频网| 怡红院日本一道日本久久| 国产精品成人久久久久久久| 久久久久久久久66精品片| 久久久中文字幕日本| 亚洲精品午夜国产VA久久成人 | 人妻无码久久精品| 午夜精品久久久久久99热| 久久综合丝袜日本网| 亚洲精品综合久久| 久久99国产精一区二区三区| 亚洲国产婷婷香蕉久久久久久| 99re久久精品国产首页2020| 国产免费久久精品99re丫y| 久久青草国产手机看片福利盒子| 久久亚洲日韩看片无码| 久久精品国产只有精品66| 99久久99这里只有免费费精品| 亚洲精品美女久久久久99小说 | 久久久久一区二区三区| 亚洲中文字幕无码久久精品1| 狠狠综合久久综合中文88| 久久国产亚洲精品无码| 99久久夜色精品国产网站| 久久久噜噜噜久久| 国产福利电影一区二区三区,免费久久久久久久精 | 97精品国产97久久久久久免费| 99久久国产热无码精品免费久久久久| 久久久久久精品免费免费自慰| 久久国产精品一区| 91精品日韩人妻无码久久不卡| 97久久国产露脸精品国产| 欧美精品九九99久久在观看| 久久久久亚洲av成人无码电影 | 精品久久久久久亚洲| 久久99久久99精品免视看动漫| 97精品依人久久久大香线蕉97|