用异或手搓的swap为什么会出错
查看原帖
用异或手搓的swap为什么会出错
552654
ふわふわ♪楼主2022/7/23 22:46
#include<iostream>
#include<cstdio>
//#define myswap(a,b) a^=b,b^=a,a^=b
using namespace std;
int a[10007],n;
void qsort(int l,int r)
{
	int i=l,j=r,mid=a[l+r>>1];
	do
	{
		while(a[i]<mid)++i;
		while(a[j]>mid)--j;
		if(i<=j)
		{
			myswap(a[i],a[j]);
			printf("a[i]=%d b[i]=%d\n",a[i],a[j]);
//			swap(a[i],a[j]);
			++i,--j;
		}
	}while(i<=j);
	if(l<j)qsort(l,j);
	if(i<r)qsort(i,r);
}
2022/7/23 22:46
加载中...