啊啊啊啊啊啊啊啊啊啊啊我晕了
查看原帖
啊啊啊啊啊啊啊啊啊啊啊我晕了
516867
SZnP楼主2021/8/10 11:00

注:函数内//的两个for本来是会代替下面while的位置的(就是for和while2选1)###

#include <iostream>
#include <iomanip>
#include <string>
#include <ctime> 
#include <cstdlib>
#include <cmath>
#include <cstring> 
#include <math.h> 
#include <string.h>
#include <cstdio>
using namespace std;
int a[100],temp,n,i;
void print()
{
	for(int i=0;i<n;i++)
	cout<<a[i]<<" ";
	cout<<endl;
	return;
}
void kuaisupaixv(int zuo,int you)
{
	if(you-zuo+1<=1)return;
	int zhong,zhongn;
	zhong=you-zuo+1;
	zhong/=2;
//	for(int i=zuo;i<zhong;i++)
//	if(a[i]>a[zhong])
//	{
//		temp=a[i];
//		for(int j=i;j<zhong;j++)
//		a[j]=a[j+1];
//		a[zhong]=temp;
//		zhong--;
//	}
	while(i<zhong)
	{
		if(a[i]>a[zhong])
		{
			temp=a[i];
			for(int j=i;j<zhong;j++)
			a[j]=a[j+1];
			a[zhong]=temp;
			zhong--;
		}
		else i++;
	}
//	for(int i=you;i>zhong;i--)
//	{
//		if(a[i]<a[zhong])
//		{
//			temp=a[i];
//			for(int j=i;j>zhong;j--)
//			a[j]=a[j-1];
//			a[zhong]=temp;
//			zhong++;
//		}
//	}
	while(i>zhong)
	{
		if(a[i]<a[zhong])
		{
			temp=a[i];
			for(int j=i;j>zhong;j--)
			a[j]=a[j-1];
			a[zhong]=temp;
			zhong++;
		}
		else i--;
	}
	kuaisupaixv(zuo,zhong-1);
	kuaisupaixv(zhong+1,you);
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>a[i];
	kuaisupaixv(0,n-1);
	print();
	return 0;
}

所以,哪儿出问题了?##

2021/8/10 11:00
加载中...