算法思想:
选取合适的key值,将比key值小的数排在数组左边,比key值大的数排在数组右边。再对key左半部分排序,key右半部分排序。
代码:
#include <iostream> using namespace std; void QuickSort(int *p, int start, int end) { if(start >= end) return; int i = start, j = end; int key = p[start]; while( i != j ) //比key大的数排在右边,比key小的数排在左边 { while( j > i && p[j] >= key) --j; swap(p[i],p[j]); while(i < j && p[i] <= key) ++i; swap(p[i],p[j]); } QuickSort(p,start,i-1); //左 右 部分进行快速排序 QuickSort(p,i+1,end); } int main() { int number; cin >> number; int *p = new int[number]; for(int i = 0; i < number; ++i) cin >> p[i]; QuickSort(p,0,number-1); for(int i = 0; i < number; ++i) cout << p[i] << " "; }