//快速排序 from aha #includeusing namespace std;int a[101],n;void print(int a[],int n){ for(int i=1;i<=n;i++) { cout< <<" "; } cout< r) //呼应后面的判断,当只剩一个数字的时候会有l>r //一个数字的时候,这个数字是已经归位了的,所以可以直接退出了。 { return; } int temp; temp=a[left]; //基准数 //从小到大情况下的目的:把基准数复原且将小于基准数的数放在基准数左边 //大于基准数的数放在基准数的右边 while(l!=r) //循环的条件是两个哨兵没有相遇 //当两个哨兵相遇了就跳出循环,不再交换值。 { //注意这里的顺序,是先让右边的开始找,右边的找完才能左边的找 //注意基准数是取右边的那个数字 while(a[r]>=temp&&r>l) //r>l没有等号的原因:目的就是让两个哨兵相遇 //虽然循环条件是r>l,但是如果没有找到可以交换的数,那么就会有r=l; //下面的循环l =有等于号 { l++; } if(l right的情况 //呼应quicksort开头那个if(l >n; for(int i=1;i<=n;i++) { cin>>a[i]; } quicksort(1,n); //left=1,right=n; print(a,n); return 0; }