• 全部
  • 问答

初学c语言

SHOUYU2 2008-03-25 06:15:12


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define N 10

void heapsort(int a[N]);
void max(int a[N],int i);
void build(int a[N]);

int heap_size;
void max(int a[N],int i)
{
int largest,l,r;
l=2*i+1;
r=2*i+2;
if(l <=heap_size && a[l]>a[i])
largest =l;
else largest=i;
if(i <=heap_size&& a[r]>a[largest])
largest =r;
if (largest!=i)
a[largest]=a[i];
a[i]=a[largest];
max(a,largest);
}
void heapsort(int a[N])
{
int i;
heap_size=N;
build(a);
for(i=N;i=1;i--)
{
a[i]=a[0];
a[0]=a[i];
heap_size--;
max(a,0);
}
}

void build(int a[N])
{
int i;
for(i=N/2;i=0;i--)
max(a,i);
}
void main()
{
int i,numbers[N];


srand((unsigned)time(0));


for (i = 0; i < N; i++)
numbers[i] = rand();

heapsort(numbers);

printf("排序完成.\n");

for (i = 0;i < N; i++)
printf("%i\n", numbers[i]);
}
...全文
73 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
meiZiNick 2008-04-30
有问题请先GOOGLE,BAIDU
回复
wjwwgh 2008-03-29
for(i=N;i=1;i--)
for(i=N/2;i=0;i--)
不是条件判断语句!
回复
wjwwgh 2008-03-29
 
if (largest!=i)
a[largest]=a[i];
a[i]=a[largest];

这里是交换,但是你这个不能实现交换,a[i]不变
试一下:

temp=a[i];
a[i]=a[largest];
a[largest]=temp;
回复
SHOUYU2 2008-03-25
屏幕没有显示,还提示出错,就退出来了
回复
youwill 2008-03-25
运行没有结果是什么意思,你看见屏幕打印了吗?还是 值没变?
用指针定义吧
void heapsort(int *a]);
void max(int *a,int i);
void build(int *a);
回复
SHOUYU2 2008-03-25
上面是关于堆排序的算法。
但是运行没有结果,
哪位懂算法和C语言的帮我看看错到哪里了
谢了
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-25 06:15
社区公告
暂无公告