自己写的堆排序程序,编写时有几个错误点,见注释,已通过dev c++调试通过。
2011-06-20 20:48
471 查看
#include <stdio.h>
#include <conio.h>
void HeapAdjust(int a[],int s,int n)//大顶堆
{
int temp=a[s];
for(int j=2*s;j<=n;j*=2)
{
if(j<n&&a[j]<a[j+1]) j++;
if(temp>a[j]) break;//这个错误点困扰了我好长时间。temp写成a[s]了,忘记了s[s]会发生变化。
a[s]=a[j];//一开始颠倒了
s=j;
}
a[s]=temp;
}
void HeapSort(int a[],int len)
{
for(int i=len/2;i>0;--i)
{
HeapAdjust(a,i,len);
}//建一个初始堆
for(int i=len;i>1;--i)
{
int temp=a[1];
a[1]=a[i];
a[i]=temp;
HeapAdjust(a,1,i-1);
}
}
int main()
{
int a[11]={0,9,8,7,1,6,4,3,5,2,0};
printf("初始序列");
for(int i=1;i<11;i++)
{
printf("%d ",a[i]);
}
HeapSort(a,10);
printf("排序后的序列");
for(int i=1;i<11;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
#include <conio.h>
void HeapAdjust(int a[],int s,int n)//大顶堆
{
int temp=a[s];
for(int j=2*s;j<=n;j*=2)
{
if(j<n&&a[j]<a[j+1]) j++;
if(temp>a[j]) break;//这个错误点困扰了我好长时间。temp写成a[s]了,忘记了s[s]会发生变化。
a[s]=a[j];//一开始颠倒了
s=j;
}
a[s]=temp;
}
void HeapSort(int a[],int len)
{
for(int i=len/2;i>0;--i)
{
HeapAdjust(a,i,len);
}//建一个初始堆
for(int i=len;i>1;--i)
{
int temp=a[1];
a[1]=a[i];
a[i]=temp;
HeapAdjust(a,1,i-1);
}
}
int main()
{
int a[11]={0,9,8,7,1,6,4,3,5,2,0};
printf("初始序列");
for(int i=1;i<11;i++)
{
printf("%d ",a[i]);
}
HeapSort(a,10);
printf("排序后的序列");
for(int i=1;i<11;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
相关文章推荐
- 一个错误的链表程序 ——编译通过,执行出错。自己没有好的调试技术,没有找到错误;而靠经验得逐行细查——费时间
- # include <errno.h >查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看
- 练习1-24: 编写一个程序,查找C语言程序中的基本语法错误,如圆括号,方括号以及花括号不配对等。要正确的处理引号(包括单引号,双引号)~转移字符序列与注释(如果读者想把该程序编写成完全通用的程序,难度会比较大。)
- 利用unix网络编程知识自己动手编写一个chatroom程序中遇到的错误与解决
- 调试C的简单过程,查找编译通过之后的程序错误
- HelloWorld程序编写调试及错误解决
- 自己编写小程序开发调试函数
- 自己编写ASSERT()宏(对调试程序很有帮助)
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- 在XCode4中添加程序调试错误信息和公司名注释
- DEV C++如何不需要通过建项目可以调试程序
- 为自己用,写的一简单文件同步程序(vs2003调试通过)
- 记录几个网络程序调试的命令
- linux下gdb调试QT程序时,报错,错误如下:
- 学会用core dump调试程序错误(转)
- 程序调试常见错误
- 学会用core dump调试程序错误
- 有N个人顺序排开参加比赛,每个人可以看到自己左右两边比自己得分少的人的分数,最少的人可以得1W的奖金,并且奖金以1w递增,赛委会让大家看到得分比自己少的人得的钱比自己少,编写程序求赛委会至少准备多少钱