堆排序原理很简单,这里不再讲述。

C语言实现

#include<stdio.h>
//大根堆,即结果从大到小
void adjust(int a[], int k, int len) {//调整以k为根的子树a[0] = a[k];for (int i = 2 * k; i <= len; i *= 2) {if (i < len && a[i] < a[i + 1]) {i++;}//找到a[k]的孩子值较大的下标if (a[i] <= a[0])break;else {//把值较大的调整到双亲结点a[k] = a[i];k = i;}}a[k] = a[0];
}//构建堆
void build(int a[], int len) {for (int i = len / 2; i>0; i--) {adjust(a, i, len);}
}//输出结果,每次输出调整堆
void output(int a[],int len) {for (int i = len; i > 0; i--) {printf("%d ", a[1]);a[1] = a[i];adjust(a, 1, i - 1);}
}
int main() {int num[] = { 100,2,80,3,70,5,4,15,1,7,8,6,10,30,9 };//a[0]不存放数据int len=(sizeof(num)/sizeof(num[0]))-1;build(num, len);output(num, len);
}

Java实现

class heap{int num[];int len;heap(int num[],int len){this.num=num;this.len=len;build();//构建堆}public void build() {int i;for(i=len/2;i>0;i--) {adjust(i,len);}}public void adjust(int k,int len) {num[0]=num[k];for (int i = 2 * k; i <= len; i *= 2) {if (i < len && num[i] < num[i + 1]) {i++;}//找到a[k]的孩子值较大的下标if (num[i] <= num[0])break;else {//把值较大的调整到双亲结点num[k] = num[i];k = i;}}num[k] = num[0];}public void output() {for(int i=len;i>0;i--) {System.out.println(num[1]+" ");num[1]=num[i];adjust(1,i-1);}}
}public class heapsort {public static void main(String []args) {int num[] = { 100,2,80,3,70,5,4,15,1,7,8,6,10,30,9 };//a[0]不存放数据//构建的是大根堆int len=num.length-1;heap h=new heap(num,len);h.output();}
}

python实现

def adjust( a, k, length):a[0]=a[k]i=2*kwhile i<=length:if i<length and a[i]<a[i+1]:i=i+1if a[i]<=a[0]:breakelse:a[k]=a[i]k=ii*=2a[k]=a[0]def build( a, length):i=length/2while i>0:adjust(a,i,length)i=i-1def output( a, length):i=lengthwhile i>0:print(a[1])a[1]=a[i]adjust(a,1,i-1)i=i-1def main():num = [100,2,80,3,70,5,4,15,1,7,8,6,10,30,9 ]length=len(num)-1;build(num,length)output(num,length)main()

堆排序可运行完整C语言,Java语言,python实现相关推荐

  1. 学习Java第一天:1、Java是什么?2、面向对象的编程思想的特点 3、Java的开发工具 4、安装JDK和配置环境变量 5、Java程序的运行过程 6、Java语言的特点

    目录 1.Java是什么? 2.面向对象的编程思想的特点 3.Java的开发工具 4.安装JDK和配置环境变量 5.Java程序的运行过程 6.Java语言的特点 1.Java是什么? java是一门 ...

  2. 数据结构c语言java语言差别,C语言和JAVA有什么区别?

    去百度文库,查看完整内容> 内容来自用户:天涯教育 java和c语言的区别是什么 什幺是java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点, 还摒弃了C++里难以理解的多继 ...

  3. Scala _11SparkWordCountscala语言java语言

    创建Maven项目 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  4. 猎豹怎么运行java_猎豹网校 数据结构与算法 Java语言 JAVA语言视频教程(火评)...

    01.NetBeans_下载和安装.mp4  02.JavaDS_数据结构和算法的概述.mp4 03.JavaDS_数组基础知识.mp4 04.JavaDS_有序数组和二分查找.mp4 05.Java ...

  5. 编程爱好者学vb还是python-编程语言Java和Python对比哪个比较好

    语言的优劣之争是个永恒的话题,有时候一次偶然地"擦枪走火"甚至可能会引发一场铁杆粉丝之间的"战争". 也经常有人问我:"老刘,到底是Java好还是Py ...

  6. 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  7. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

  8. Java语言运行机制及运行过程

    1.4 Java语言运行机制及运行过程 lJava两种核心机制 ØJava虚拟机 (Java Virtal Machine) Ø垃圾收集机制 (Garbage Collection)1.4 Java语 ...

  9. 关于java是最好的语言的段子_疯狂java——第一章 java语言概述与开发环境

    J2ME: 主要用于控制移动设备和信息家电等有限存储的设备. J2SE: 整个java技术的核心和基础,它是J2ME和J2EE编程的基础. J2EE: Java技术中应用最广泛的部分,J2EE提供了企 ...

最新文章

  1. Python抓取新浪新闻数据(三)
  2. let const var 比较说明
  3. Java爬虫——B站弹幕爬取
  4. 【计算理论】计算复杂性 ( 证明团问题是 NP 完全问题 )
  5. 人脸识别及对比_没有“色彩对比可及性的神话”
  6. 深入理解redis数据类型
  7. 【CodeForces - 299C 】Weird Game (思维,模拟,贪心,博弈,OAE思想)
  8. 2017.3.30 时态同步 失败总结
  9. cisco端口排错步骤
  10. OpenCV-图像处理(29、凸包-Convex Hull)
  11. 浙江省二级java考试_2020年浙江省高校计算机二级Java考试大纲
  12. 嵌入式软件架构设计(转载)
  13. 深度探索C++对象模型复习和学习 第三章 Data 语义学(The Semantics of Data )
  14. 疫情下跨越一万公里的友情:熊超与飒特电子哨兵的故事
  15. 食品和饮料销售预测分析
  16. 在哪里能看到计算机缓存大小,怎么查看电脑硬盘缓存大小
  17. 华为人工智能atlasA800-9000物理服务器离线安装及CANN安装和MindSpore安装和Tensorflow安装
  18. 支付宝网商贷是雪中送炭么?
  19. c语言程序电子琴21个音符,14键电子琴曲谱_小电子琴有14个键音符怎么标
  20. Android自定义控件(一) 可滑动的进度条

热门文章

  1. VS2012生成C的dll并调用以及Python调用C的DLL
  2. oracle sys_connect_by_root,CONNECT_BY_ROOT实现行列转换
  3. 不混淆so文件_浅尝ollvm轻度混淆后的加密算法分析
  4. 日常生活开支记账明细_花钱如流水?拥有这两款记账APP,1年能省1万块!
  5. 苹果如何分屏_刚刚,苹果证实,iPhone12 刘海没了!
  6. dmesg时间转换工具
  7. linux ulimit
  8. QString 字符编码
  9. Python 集合(set) 介绍
  10. Python-10-条件和条件语句