排序

来源:互联网 发布:地图示意图制作软件 编辑:程序博客网 时间: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;  }  
原创粉丝点击