双向快速排序
#include <iostream> using namespace std; void swap(int* p,int* q) { int temp = *p; *p = *q; *q = temp; } //快速排序 int partition(int *ptr,int first, int last) { int temp = ptr[first]; int i = first + 1, j = last; while(i < j) { while(ptr[i] < temp && i <= last) ++i; while(ptr[j] > temp) --j; if(i < j) { swap(&ptr[i],&ptr[j]); ++i; --j; } } swap(&ptr[first],&ptr[j]); return j; } void quickSort(int *ptr,int first,int last) { if(first < last) { int q = partition(ptr,first,last); quickSort(ptr,first,q-1); quickSort(ptr,q+1,last); } } int main() { int a[] = {2,23,45,1,8,2,0}; for(int i =0; i <= 6; ++i) { std::cout << a[i] << " "; } cout << endl; //mergeSort(a,0,6); quickSort(a,0,6); for(int i =0; i <= 6; ++i) { std::cout << a[i] << " "; } std::cout << std::endl; return 0; }