试图实现堆程序,找不到我错的地方
Trying to implement heapify procedure , could not find error where I am wrong
我使用一种简单的方法以自下而上的方式将数组转换为堆。我找不到错误。有人能看一下并告诉我吗。
基本上,我是以自下而上的方式从一个随机数组中提取。
for(int i=n/2;i>=1;i--)
{
heapify(i,n,arr);
}
堆积程序存在一些问题,有时会给出正确的结果,但大多数情况下是错误的。
`#include<iostream>
#include<conio.h>
using namespace std;
int min(i
nt x,int y,int z)
{
return ((x>y?x:y)>z?(x>y?x:y):z);
}
int left(int i)
{
return (2*i);enter code here
}
int right(int i)
{
return (2*i+1);
}
int parent(int i)
{
return (i/2);
}
int heapify(int i,int n,int arr[])
{
int temp;
int l=left(i);
int r=right(i);
temp=i;
if(l<=n&&arr[l]<arr[i])
temp=l;
else if(r<=n&&arr[temp]>arr[r])
temp=r;
if(temp!=i)
{
int x=arr[temp];
arr[temp]=arr[i];
arr[i]=x;
heapify(temp,n,arr);
}
//else return 0;
}
int deletemin(int n,int arr[])
{
cout<<arr[1]<<"ndeLetedn";
arr[1]=arr[n];
}
int insert(int x,int size,int arr[])
{
arr[size]=x;
int i=(size);
do
{
i=parent(i);
if(arr[i]!=min(arr[i],arr[left(i)],arr[right(i)]))
heapify(i,(size),arr);
else
return 0;
}while(i!=1);
}
int main()
{
int n,t,arr[100];
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>arr[i];
for(int i=n/2;i>=1;i--)
{
heapify(i,n,arr);
}
for(int i=1;i<=n;i++)
cout<<arr[i]<<" ";
deletemin(n,arr);
n--;
heapify(1,n,arr);
for(int i=1;i<=n;i++)
cout<<arr[i]<<" ";
int y;
cout<<"what value do you want to insertn";
cin>>y;
n++;
insert(y,n,arr);
for(int i=1;i<=n;i++)
cout<<arr[i]<<" ";
}
getch();
return 0;
}
`
一个简单的观察结果是,您的min函数是错误的!它不返回3个数字中的最小值。暂时用if来做吧!
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 在 NDK 上找不到 c++ 和 java 的实现
- 制作:没有实现目标的规则 - 找不到源文件
- Android NDK OpenCV - 找不到本机的实现
- 使用本机lib(仅限C,没有C++),并且找不到实现
- 试图实现堆程序,找不到我错的地方
- 在我的二叉搜索树实现中找不到指针错误?
- C++ 项目布局似乎不正确,编译器找不到实现文件
- 托管 C++ 代码找不到函数实现
- 在程序中找不到错误(快速排序实现)
- C++文件处理,如何实现在此代码上找不到记录