#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; }