请求指正
查看原帖
请求指正
1178821
Xiangxiashengzhang楼主2024/1/2 17:28
#include<iostream>
#include<math.h>
using namespace	std;
struct candinate{
	int id;
	int grade;
};
void ShellSort(candinate *arr,int n)
{
	int gap=n;
	while(gap!=1)
	{
		gap/=2;
		for(int i=0; i<n-gap ;i++)
			{
				int temp=arr[i+gap].grade;
				int t=arr[i+gap].id;
		    	int	end = i;
				while(end>=0)
				{
					if( arr[end].grade ==temp)
					{
						if( arr[end].id > t)
						{
							arr[end+gap].grade = arr[end].grade;
                    		arr[end + gap].id = arr[end].id;
							end-=gap;
						}
					}
					else if( arr[end].grade < temp)
					{
						arr[end + gap].grade = arr[end].grade;
                    	arr[end + gap].id = arr[end].id;
						end-=gap;
					}
					else
						break;
				}
				arr[end+gap].grade=temp;
				arr[end+gap].id = t;
			}
	}
}
int main()
{
	int n,m;
	cin>>n>>m;
	candinate *a=new candinate[n+1];
	int i=0;
	for(i=0; i<n ; i++)
	{
		cin>>a[i].id>>a[i].grade;
	}
	ShellSort(a,n);
	int t=floor(m*1.5);
	int b=a[t-1].grade;
	for(i=t; i<n;i++)
	{
		if(a[i].grade==b)
			t++;
		else
			break;
	}
	cout<<b<<' '<<t<<endl;
	for(i=0; i<t; i++)
	{
		cout<<a[i].id<<' '<<a[i].grade<<endl;
	}
	delete []a;
return 0;
}


这段代码有什么问题,不知道错在哪里了,各位大佬帮帮忙

2024/1/2 17:28
加载中...