日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++快速排序

發(fā)布時間:2025/3/21 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++快速排序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//左邊區(qū)間比key小,中間區(qū)間未處理,右邊區(qū)間比key大 int oneSort(int a[],int left,int right) {//i,j為兩個指針,一個從左向右移動,一個從右向左移動int i=left;int j=right;int key=a[left]; //把第一個數(shù)當(dāng)軸值while(i<j)//每次循環(huán)處理左右兩個子區(qū)間,并完成左右區(qū)間第一個不滿足值的位置交換{while(key<a[j]&&i<j) //如果右邊的值比軸值大,指針向左移動j--;if(i<j){ a[i]=a[j];//右邊第一個比key小的值放在左邊指針停留的位置i++;//左邊指針向右移動一位,下次指針移動從下一個位置開始}while(a[i]<key&&i<j) //如果左邊的值比軸值小,指針向右移動i++;if(i<j){a[j]=a[i];//左邊第一個比key大的值放在右邊指針停留的位置j--;//右邊指針向左移動一位,下次指針移動從下一個位置開始}}//至此,[left,i]左邊區(qū)間值都比key小,[j,right]右邊區(qū)間值都比key大,完成時i==ja[i]=key; //設(shè)置key的位置,i指針停留的位置就是key的位置,實際上就是交換key,i,j的值//key=a[j];右邊第一個比key小的值放在key位置//a[j]=a[i];左邊第一個比key大的值放在右邊第一個比key小的位置//a[i]=key;key放在左邊第一個比key大的位置return i; //返回key的位置 } void qSort(int a[],int left,int right) {if(left<right){int key_pos=oneSort(a,left,right); //完成一次劃分,并返回key的坐標(biāo)qSort(a,left,key_pos-1);//繼續(xù)劃分左邊qSort(a,key_pos+1,right);//繼續(xù)劃分右邊} }int _tmain(int argc, _TCHAR* argv[]) {int a[10] = {7,3,8,9,4,1,10,5,2,6};cout<<"before sort:";for (int i=0;i<10;i++){cout<<a[i]<<" ";}cout<<endl;qSort(a,0,9);cout<<"after sort:";for (int i=0;i<10;i++){cout<<a[i]<<" ";}cout<<endl;getchar();return 0; }

總結(jié)

以上是生活随笔為你收集整理的C/C++快速排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。