#include<iostream> using namespace std; int arr[5] = {5,4,1,3,6}; //待排序数组 void quick_sort(int left,int right){ int tmp = arr[left]; //找基准 if(left>=right){ //如果左边扫描大于右边扫描就结束 return; } int i = left; //从左边扫描 int j = right; //从右边扫描 while(i<j){ while(i<j&&arr[j]>=tmp){ j--; } arr[i] = arr[j]; //先右边扫描 扫描到符合条件的数就把他给基准 while(i<j&&arr[i]<=tmp){ i++; } arr[j] = arr[i]; //然后左边扫描扫描到符合条件的数给刚才的右边的数 也就是交换 } arr[i] = tmp; //再把基准给左边交换过的那个数 quick_sort(left,i-1); //左边扫描 quick_sort(i+1,right); //右边扫描 } int main() { quick_sort(0,4); for(int i=0;i<5;i++){ printf("%d ",arr[i]); } return 0; }