快排序的递归算法。
快排序号称平均最快的排序方法。
思想就是先找出一个支点,将所有小于它的元素放到它前面,大于它的元素放它后面,接下来前面的进行递归,后面的也进行递归。
这是我的理解。程序也不知道是不是最优的。仅供参考。
- #include <iostream>
- using namespace std;
- void QuickSort(int arr[],int start,int end){
- if(start>=end)
- return;
- int pivot=arr[(start+end)/2];
- int i=start,j=end;
- int t;
- while(1){
- while(arr[i]<pivot)i++;
- while(arr[j]>pivot)j--;
- if(i==j)break;
- t=arr[i];
- arr[i]=arr[j];
- arr[j]=t;
- }
- // for(j=0;j<10;j++){
- // cout<<arr[j]<<" ";
- // }
- // cout<<endl<<"pivot="<<pivot<<endl;
- QuickSort(arr,start,i-1);
- QuickSort(arr,i+1,end);
- }