隨筆 - 100  文章 - 50  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我收藏的一些文章!

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          #include<iostream>
          #include<stdio.h>
          #include<conio.h>
          #include<string.h>
          using namespace std;
          typedef int* SeqList;
          int partition(SeqList r,int i,int j){
           //調用partition(R,low,high)時,對R[low...high]做劃分并返回基準記錄的位置。
           int pivot =r[i];//用區間的第一個記錄作為基準
                           //pivot 相當于在位置i上。
           while(i<j){ //從區間兩端交替向中間掃描,直至i=j
            while(i<j&&r[j]>=pivot)
            j--;//從右向左掃描,查找第一個關鍵字小于pivot的記錄r[j]
            if(i<j) //表示找到的r[j]<pivot
            r[i++]=r[j]; //相當于交換r[i]和r[j],交換后i指針加1
            
            while(i<j&&r[i]<=pivot) //從左向右掃描,查找第1個關鍵字大于pivot的記錄r[i]
            i++;
            if(i<j)//表示找到了r[i],使r[i]>pivot
            r[j--]=r[i];//相當于交換r[i]和r[j],交換后指針減一。
           }
           r[i]=pivot;//基準記錄已被最后定位。
           return i;
          }
          void quicksort(SeqList r,int low,int high){ //對R[low....high]快速排序。
           int pivot;//劃分后的基準記錄的位置。
           if(low<high){//僅當區間的長度大于1時,才排序。
            pivot=partition(r,low,high);
            //對R[low...high]做劃分。
            quicksort(r,low,pivot-1);//對左區間遞歸排序。
            quicksort(r,pivot+1,high);//對右區間遞歸排序。
           }
          }
          int main(){
           int a[]={1,4,5,7,9,10,2,3,8,6};
           printf("\nbegin sort:");
           for(int i=0 ;i<10;i++)
           printf("%3d  ",a[i]);
           quicksort(a,0,9);
           printf("\nafert sort:");
           for(int i=0 ;i<10;i++)
           printf("%3d  ",a[i]);
          }
          posted on 2008-07-28 19:35 fly 閱讀(166) 評論(0)  編輯  收藏 所屬分類: C/C++學習

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 永新县| 青州市| 弋阳县| 华池县| 延长县| 磐安县| 萍乡市| 金坛市| 靖安县| 石狮市| 莱阳市| 寿光市| 凤城市| 霞浦县| 哈尔滨市| 泗水县| 云南省| 海南省| 太和县| 石河子市| 罗江县| 舟曲县| 钦州市| 长春市| 天全县| 古浪县| 平定县| 莱州市| 钦州市| 扶风县| 汉中市| 都安| 彭水| 松原市| 绩溪县| 迁西县| 巨鹿县| 西畴县| 嵩明县| 南昌市| 五峰|