quicksort(快排)
#include<iostream> #include<stdio.h> using namespace std; //显示数组元素 void show(int *a,int n) { for(int i=0;i<n;i++) { printf("%d",a[i]); } printf("\n"); } //快排实现 void sort(int *a,int lowIndex,int hightIndex) { int i = lowIndex; int j = hightIndex; int key = a[i]; while(i<j) { while(i<j && a[j]>=key) { j--; //printf("j = %d\n",j); } if(i<j) { a[i++] = a[j]; } while(i<j && a[i]<=key) { i++; //printf("i = %d\n",i); } if(i<j) { a[j--]=a[i]; } a[i] = key; sort(a,lowIndex,i-1); sort(a,i+1,hightIndex); } } //测试 int main() { int a[]={1,4,7,2,5,8,3,6,9}; int n = sizeof(a)/sizeof(int); printf("n = %d\n",n); show(a,n); sort(a,0,n-1); show(a,n); return 0; }