用的归并排序,结果一片红,可以帮忙看看错误吗
查看原帖
用的归并排序,结果一片红,可以帮忙看看错误吗
809341
znnnn楼主2024/1/16 16:32
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100;
int q[N];
int tmp[N];
void merge_sort(int q[],int l,int r)
{
	if(l>=r)
	return;
	int mid=(l+r)/2;
	merge_sort(q,l,mid);
	merge_sort(q,mid+1,r);
	int k=0,i=l,j=mid+1;
	while(i<=mid&&j<=r)
	if(q[l]<=q[j])tmp[k++]=q[i++];
	else tmp[k++]=q[j++];
	while(i<=mid)tmp[k++]=q[i++];
	while(j<=r)tmp[k++]=q[j++];
	for(i=l,j=0;i<=r;i++,j++)
	q[i]=tmp[j];	 
}
int main()
{
	int n,c=0;
	int tmp2[N];
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&q[i]);
	}
	//sort(q,q+n);
	int j;
	for(int i=0;i<n;i++){
		for(j=i+1;j<n;j++)
		if(q[i]==q[j]){
		break;
		}
		if(q[i]!=q[j]){
		tmp2[c]=q[i];
		c++;
		}	
	}
	merge_sort(tmp2,0,c);
	//sort(tmp2,tmp2+c);
                           printf("%d\n",c);
	for(int i=0;i<c;i++)
	{
		printf("%d ",tmp2[i]);
	}
	return 0;
}
2024/1/16 16:32
加载中...