c++ - 我已经写了一个代码直接从数组创建最大堆到一个创建的虚拟数组但是输出是错误的,有人可以指出错误
问题描述
int swap(int *dum ,int i, int temp)
{
int j=*(dum+temp);
*(dum+temp)=*(dum+i);// swapping numbers in index i and temp of array dum
*(dum+i)=j;
return 0;
}
int main()
{
int a[6]={32,40,15,50,5,44};
int n=6;
int *dum=new int[n];
for(int i=0;i<n;i++)
{
*(dum+i)=*(a+i);// assigning input array elements to a dummy error
if(i>0)
{
int temp=(i-1)/2;
while(*(dum+i)>*(dum+temp))// checking if a particular node is larger than parent node data
{
swap(dum,i,temp);// calling a function to swap the data a indices i and temp
i=temp;// i will now hold the index of parent of previous i
temp=(i-1)/2;//temp will now hold parent of new i
if(i==0)
{
break;
}
}
}
}
for(int i=0;i<n;i++)
{
cout<<*(dum+i)<<"\n";//print data members in dummy array
}
}
OUTPUT:// 这是输出,想要的输出在它旁边
50 //50
50 //40
44 //44
50 //32
5 //15
44 //5
解决方案
推荐阅读
- java - 使用 firebase ValueEventListener 检测值变化
- c# - 将 UnregisterHotkey 从用户控件解析到父窗体
- asp.net - VS2017 未将所有内容部署到 AWS
- swift - SwiftUI 在绑定中使用 OR (||)
- twitter-bootstrap - 自举对齐问题
- c++ - MFC:在运行时扩展
- javascript - 在 node.js 中处理 url 或图像文件数据
- ruby-on-rails - Rspec 期望接收特定的记录实例
- python - 使用python确定给定数据集的最佳k-mean
- sql - 如何在 SQL 中正确排序财政年度季度?