文档章节

堆排序

4只企鹅
 4只企鹅
发布于 2016/04/23 17:24
字数 213
阅读 1
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

#include<stdio.h>
#define MAX 255
//堆排序学习 
int R[MAX];
void Heapify(int s,int m)
{
 //调整堆 
 int j,temp;
 temp=R[s];
 j=2*s;
 while(j<=m)
 {
  if(j<m&&R[j]>R[j+1]) j++;
  if(temp<R[j]) break;
  R[s]=R[j];
  s=j;
  j=j*2;
 }
 R[s]=temp;
 
}
void BuildHeap(int n)
{
 //初始建堆
 int i;
 for(i=n/2;i>0;i--)
 Heapify(i,n);
  
}
void Heap_sort(int n)
{
 //堆排序 
 int i;
 BuildHeap(n);
 for(i=n;i>1;i--)
 {
  R[0]=R[1];R[1]=R[i];R[i]=R[0];
  Heapify(1,i-1);
 }
}
int main()
{
 //测试函数
  printf("堆排序示例:\n");
  int n,i;
  printf("Please input the number under %d\n",MAX);
  scanf("%d",&n);
  if(n>MAX)
  {
   printf("The number is not right!\n");
   return 0;
  }
  printf("Please input the array one by one:\n");
  for(i=1;i<=n;i++)
  {
   scanf("%d",&R[i]);
  }
 printf("The array you input is:\n");
 for(i=1;i<=n;i++)
 {
  printf("%d ",R[i]);
 }  
 printf("The array after Heap_sort is:\n");
 Heap_sort(n);
 for(i=1;i<=n;i++)
 {
  printf("%d ",R[i]);
 }
   
  return 0;
}

© 著作权归作者所有

上一篇: 贪心算法
下一篇: 直接选择排序
4只企鹅
粉丝 0
博文 8
码字总数 1952
作品 0
太原
程序员
私信 提问

暂无文章

为什么面试必问线程状态?你的回答满分了吗

看很多同学的面经、网上的面试资料,都不约而同的提到了一个基础问题:“你知道线程有几种状态吗?状态之间的扭转是怎样的?”,有准备的同学都知道有五种:New(新建)、Runnable(可运行)...

Z_J_H
24分钟前
4
0
如何保障云上数据安全?一文详解云原生全链路加密

点击下载《不一样的 双11 技术:阿里巴巴经济体云原生实践》 本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书,点击上方图片即可下载! 作者 李鹏(壮怀)阿里云容器服务高...

阿里巴巴云原生
24分钟前
3
0
获取数组的第一个元素

我有一个数组: array( 4 => 'apple', 7 => 'orange', 13 => 'plum' ) 我想获得此数组的第一个元素。 apple 预期结果: apple 一个要求: 它不能通过引用传递来完成 ,所以array_shift不是一......

javail
26分钟前
4
0
哈希情史知多少

<p align="right">——日拱一卒,不期而至!</p> 简介 hash是我们工作中经常听到的词,比如哈希表、哈希函数、hashCode、HashTable、HashMap等等,那么它们之间到底有怎样的爱恨情仇呢?来一...

彤哥读源码
33分钟前
4
0
SpringCloud 学习(5) --- Zuul(一)基本概念、配置

[TOC] Spring Cloud eureka:注册中心 服务端:提供注册 客户端:进行注册 ribbon:负载均衡(集群) Hystrix:熔断器,执行备选方案 Feign:远程调用 Zuul:网关,统一入口。 1.1、一夫当关,...

庭前云落
35分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部