• <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)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
              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 閱讀(4521) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

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

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


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


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

            導(dǎo)航

            統(tǒng)計(jì)

            公告

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

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            我的博客

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            香蕉久久永久视频| 一本久久久久久久| 精产国品久久一二三产区区别| 久久久久久久久久久精品尤物| 久久久久亚洲AV无码专区体验| 久久免费精品视频| 欧美精品福利视频一区二区三区久久久精品| 国产成人99久久亚洲综合精品| 日日狠狠久久偷偷色综合96蜜桃| 一本久久综合亚洲鲁鲁五月天| 国产精品对白刺激久久久| 久久伊人中文无码| 久久精品国产一区二区三区日韩| 亚洲精品NV久久久久久久久久 | 国产精品久久成人影院| 狠狠人妻久久久久久综合| 性欧美丰满熟妇XXXX性久久久| 国产一区二区精品久久岳| 麻豆亚洲AV永久无码精品久久| 久久久艹| 久久成人精品| 成人亚洲欧美久久久久| 欧美噜噜久久久XXX| 一本一本久久a久久精品综合麻豆| 久久久精品午夜免费不卡| 欧美丰满熟妇BBB久久久| 久久毛片一区二区| 亚洲精品99久久久久中文字幕| AAA级久久久精品无码区| 国产精品久久久久久搜索| 久久国产亚洲高清观看| 亚洲色大成网站www久久九| 久久久久高潮综合影院| 久久婷婷五月综合97色直播| 亚洲?V乱码久久精品蜜桃 | 少妇无套内谢久久久久| 久久精品成人| 久久青青草原精品国产不卡 | 久久九九兔免费精品6| 久久综合九色欧美综合狠狠| 久久久精品波多野结衣|