堆排序

来源:互联网 发布:婚纱照电子相册软件 编辑:程序博客网 时间:2024/05/24 06:34
#define MAXSIZE 100
#include <stdio.h>
void print(const int *p,int len)
{
int i = 0;
for (; i < len; i++)
{
printf("%d ",p[i] );
}
printf("\n");
}


void swap(int *a,int i,int j)
{
int temp;
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}


void Heap_adjust(int p[],int len,int index)  //堆调整  int p[] == int *p
{
int max;
int i = index;
for ( i = index; i <= len-1 ; ++i)
{
int lcld = 2*i+1;
int rcld = 2*i+2;
if (lcld>len-1)
{
return;
}
if (rcld>len-1)
{
max = lcld;
}
else
max = p[lcld]>p[rcld]?lcld:rcld;
if (p[i]>p[max])
{
return;
}
else
swap(p,i,max);
i = max;
}
}




void Heap_sort(int *p ,int len)
{
int i,j;
for ( i = (len/2 - 1); i >= 0; i--)
{
Heap_adjust(p,len,i);
}
for(j=len-1;j>=1;j--)
{
swap(p,0,j);
Heap_adjust(p,j,0);
}
}




/*
void Heap_sort(int *p ,int len)
{
int i,j;
for ( i = (len/2 - 1); i >= 0; i--)
{
Heap_adjust(p,len,i);
}
for(j=1;j<=len-1;j++)
{
swap(p,0,len-j);
Heap_adjust(p,len-j,0);
}
}
*/


int main()
{
int a[MAXSIZE] = {0};
int len = 0;
char ch;
int num = 0;
printf("\n" );
while ((ch = getchar()) != '\n')
{
while(ch !=' '&&ch != '\n')
{
num = num*10 + ch-'0';
ch =getchar();
}
a[len++] = num;
num = 0;
if (ch == '\n')
{
break;
}
}
Heap_sort(a,len);
print(a,len);

return 0;
}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 延寿吧 哈尔滨到延寿 延寿片同仁堂 首乌延寿片的功效与作用 养生延寿片是国药准字号吗 青春延展去皱眼霜 延展性 延平区 南平市延平区 祝延平版武松全集 武松祝延平共8集 延平个人急售二手房 南平延平出租房屋两室一厅 延平海战高清免费观看 延平房产 祝延平版武松 祝延平现任妻子顾春芳 延平王 延平 延庆属于哪个省 延庆县城住宿 延庆周边旅游景点 延庆好玩的地方 延庆景点大全 延庆县住宿 延政勋 男性喷剂排名 男用湿巾的危害 男用湿巾是什么 情趣环是什么 延迟环 持久环原理 金刚持久环 满足不了女朋友 喷剂 达克罗宁喷剂 延丹益心胶囊 延更丹 同仁堂延更丹价格 延更丹多少钱一瓶 延更丹的功效与作用