快排do-while语句判断条件为什么是有等号的
  • 板块灌水区
  • 楼主Ayxrakzil
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/7/16 08:43
  • 上次更新2023/10/27 20:06:18
查看原帖
快排do-while语句判断条件为什么是有等号的
657413
Ayxrakzil楼主2022/7/16 08:43
#include<iostream>
using namespace std;
int n;
long long a[100001];
void qsort(int l,int r){
	int i=l,j=r,mid=a[(l+r)/2];
	do{
		while(a[i]<mid)i++;
		while(a[j]>mid)j--;
		if(i<=j){
			swap(a[i],a[j]);
			i++,j--;
		}
	}while(i<=j);
	if(l<j)
		qsort(l,j);
	if(i<r)
		qsort(i,r);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	qsort(1,n);
	for(int i=1;i<=n;i++)
		cout<<a[i]<<" ";
	return 0;
}

qsort函数中do{}while语句的判断为什么是i<=j而不是i<j,我用i<j也能过P1177【模板】快速排序

2022/7/16 08:43
加载中...