1 #include <iostream>
2 using namespace std;
3
4 void swap(int* a,int* b){
5 int temp = 0;
6 temp = *a;*a=*b;*b=temp;
7 }
8
9 void qsort(int arr[],int left,int right){
10
11 if(left<right){//递归边界,保证当前区间的长度不超过1
12
13 int i = left;
14 int j = right;
15 int key = arr[i];
16
17 //下面的while循环的作用,就是将数组中 比key小的数据放在key左边,比key大的数据放在key右边
18
19 while(i<j){//只要i与j不相遇
20
21 while(i<j && arr[j]>=key) j--;//反复左移
22 swap(&arr[i],&arr[j]);//while结束,即找到比key小的值,就交换位置
23
24 while(i<j && arr[i]<=key) i++;
25 swap(&arr[i],&arr[j]);
26 }
27
28 qsort(arr,left,i-1);//对 左区间进行快速排序
29 qsort(arr,i+1,right);//对 右区间进行快速排序
30 }
31
32 }
33
34 int main(){
35
36 int num[7]={5,4,7,1,2,3,9};
37 qsort(num,0,6);
38 for(int i=0;i<7;i++){
39 cout<<num[i]<<'\n';
40 }
41
42 return 0;
43 }