堆排序中第一个元素没排序?

发布网友 发布时间:2022-04-23 12:40

我来回答

1个回答

热心网友 时间:2022-05-22 02:44

主要原因是你的排序算法是从下标1开始,主函数中下标从0开始,改成一样的就可以了,下面是改过的主函数:
void main()
{
RecType R[MaxSize];
KeyType a[MaxSize];
cout<<"输入要排序的个数"<<endl;
int n,j;
cin>>n;
cout<<"输入各个元素的值"<<endl;
for(int i=1;i<=n;i++)
{
cin>>j;
a[i]=j;
}
for(i=1;i<=10;i++)
{
R[i].key=a[i];
}
cout<<"未排序前"<<endl;
for(i=1;i<=10;i++)
{
cout<<R[i].key<<" ";
}
cout<<endl;
HeapSort(R,n-1);
cout<<"堆排序后"<<endl;
for(i=1;i<=10;i++)
{
cout<<R[i].key<<" ";
}
cout<<endl;

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com