快排算法

来源:互联网 发布:网络最新流行语 编辑:程序博客网 时间:2024/04/26 18:19
#include <iostream>using namespace std;template <typename T>void quicksort(T a[],int low,int high){int mid;if(low < high){mid = partition(a,low,high);quicksort(a,low,mid-1);quicksort(a,mid+1,high);}}template <typename T>int partition(T a[],int low,int high){int temp = a[low];while(low < high){while((low < high)&&(a[high] > temp)){high--;}if(low < high)//一定要,当a[] = {0,1} 试试a[low++] = a[high];while((low < high)&&(a[low] < temp)){low++;}if(low < high)//一定要,当a[] = {0,1} 试试                       a[high--] = a[low];}a[low] = temp;return low;}int main() {int a[] = {2,3,1,55,6,4,7,3,0};//int a[] = {2,0,1,5};int len = sizeof(a)/sizeof(int);quicksort(a,0,len-1);    for (int i = 0; i < len; ++i)        cout << a[i] << " ";    cout << endl;}

#include <iostream>using namespace std;template <typename T>void quicksort(T a[],int low,int high){int mid;if(low < high){mid = partition(a,low,high);quicksort(a,low,mid-1);quicksort(a,mid+1,high);}}template <typename T>int partition(T a[],int low,int high){int temp = a[low];while(low < high){while((low < high)&&(a[high] >= temp)){high--;}a[low] = a[high];while((low < high)&&(a[low] <= temp)){low++;}            a[high] = a[low];}a[low] = temp;return low;}int main() {int a[] = {0,1};//int a[] = {2,0,1,5};int len = sizeof(a)/sizeof(int);quicksort(a,0,len-1);    for (int i = 0; i < len; ++i)        cout << a[i] << " ";    cout << endl;}