堆排序可运行完整C语言,Java语言,python实现
堆排序原理很简单,这里不再讲述。
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实现相关推荐
- 学习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是一门 ...
- 数据结构c语言java语言差别,C语言和JAVA有什么区别?
去百度文库,查看完整内容> 内容来自用户:天涯教育 java和c语言的区别是什么 什幺是java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点, 还摒弃了C++里难以理解的多继 ...
- Scala _11SparkWordCountscala语言java语言
创建Maven项目 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- 猎豹怎么运行java_猎豹网校 数据结构与算法 Java语言 JAVA语言视频教程(火评)...
01.NetBeans_下载和安装.mp4 02.JavaDS_数据结构和算法的概述.mp4 03.JavaDS_数组基础知识.mp4 04.JavaDS_有序数组和二分查找.mp4 05.Java ...
- 编程爱好者学vb还是python-编程语言Java和Python对比哪个比较好
语言的优劣之争是个永恒的话题,有时候一次偶然地"擦枪走火"甚至可能会引发一场铁杆粉丝之间的"战争". 也经常有人问我:"老刘,到底是Java好还是Py ...
- 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例
[提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- Java语言运行机制及运行过程
1.4 Java语言运行机制及运行过程 lJava两种核心机制 ØJava虚拟机 (Java Virtal Machine) Ø垃圾收集机制 (Garbage Collection)1.4 Java语 ...
- 关于java是最好的语言的段子_疯狂java——第一章 java语言概述与开发环境
J2ME: 主要用于控制移动设备和信息家电等有限存储的设备. J2SE: 整个java技术的核心和基础,它是J2ME和J2EE编程的基础. J2EE: Java技术中应用最广泛的部分,J2EE提供了企 ...
最新文章
- Python抓取新浪新闻数据(三)
- let const var 比较说明
- Java爬虫——B站弹幕爬取
- 【计算理论】计算复杂性 ( 证明团问题是 NP 完全问题 )
- 人脸识别及对比_没有“色彩对比可及性的神话”
- 深入理解redis数据类型
- 【CodeForces - 299C 】Weird Game (思维,模拟,贪心,博弈,OAE思想)
- 2017.3.30 时态同步 失败总结
- cisco端口排错步骤
- OpenCV-图像处理(29、凸包-Convex Hull)
- 浙江省二级java考试_2020年浙江省高校计算机二级Java考试大纲
- 嵌入式软件架构设计(转载)
- 深度探索C++对象模型复习和学习 第三章 Data 语义学(The Semantics of Data )
- 疫情下跨越一万公里的友情:熊超与飒特电子哨兵的故事
- 食品和饮料销售预测分析
- 在哪里能看到计算机缓存大小,怎么查看电脑硬盘缓存大小
- 华为人工智能atlasA800-9000物理服务器离线安装及CANN安装和MindSpore安装和Tensorflow安装
- 支付宝网商贷是雪中送炭么?
- c语言程序电子琴21个音符,14键电子琴曲谱_小电子琴有14个键音符怎么标
- Android自定义控件(一) 可滑动的进度条
热门文章
- VS2012生成C的dll并调用以及Python调用C的DLL
- oracle sys_connect_by_root,CONNECT_BY_ROOT实现行列转换
- 不混淆so文件_浅尝ollvm轻度混淆后的加密算法分析
- 日常生活开支记账明细_花钱如流水?拥有这两款记账APP,1年能省1万块!
- 苹果如何分屏_刚刚,苹果证实,iPhone12 刘海没了!
- dmesg时间转换工具
- linux ulimit
- QString 字符编码
- Python 集合(set) 介绍
- Python-10-条件和条件语句