排序
来源:互联网 发布:地图示意图制作软件 编辑:程序博客网 时间:2024/06/06 06:51
1.快速排序
对数列选择一个枢纽,从两端向中间遍历,大于枢纽往后甩,小于枢纽往前甩。直至两个指针相遇,相遇处为枢纽位置。返回该位置。
递归的前半段,后半段继续该过程。
#include<iostream> using namespace std;int Partition(int arrayNum[],int start,int end){ int pivotkey = arrayNum[start]; //用子表的第一个记录为枢轴 //循环条件,从表的两端交替地向中间扫描 while(start<end) { while(start<end && arrayNum[end]>pivotkey) end--; arrayNum[start]=arrayNum[end]; while(start<end && arrayNum[start]<=pivotkey) start++; arrayNum[end]=arrayNum[start]; } arrayNum[start]=pivotkey;//枢轴记录到位 return start;//返回枢轴位置 } void QSort(int arrayNum[],int start,int end){ //递归结束条件start>=end if(start<end) { int pivotloc=Partition(arrayNum,start,end);//将表一分为2 QSort(arrayNum,start,pivotloc-1);//对低子表递归排序,pivotloc是枢轴位置 QSort(arrayNum,pivotloc+1,end);//对高子表递归排序 } } void QuickSort(int arrayNum[]){ QSort(arrayNum,0,6); } int main(){ int arrayNum[7]={30,32,9,64,14,17,8}; QuickSort(arrayNum); for(int i=0;i<7;i++) cout<<arrayNum[i]<<" "; cout<<endl; return 0; }