java堆排序.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java堆排序

package ds;import java.util.*;public class HeapSort {int[] num;int length;//数组长度public void accept(){Scanner sc=new Scanner(System.in);System.out.println(请输入数组长度);length=sc.nextInt();num=new int[length];for(int i=0;ilength;i++){System.out.println(请输入数);num[i]=sc.nextInt();}}//将二叉树转换为堆,n代表的是元素的个数public void treeToHeap(int n){//i代表的是父节点,首先初始化为最后一个父节点的索引int i=(n-1)/2;//j代表的是左子节点int j=0;//如果父节点没有比较完while(i=0){//如果没有左子节点if(2*i+1=n){i=i-1;//continue;}//如果该父节点有子节点else{ j=2*i+1; //如果有右子节点 if(j+1n) { //比较j和兄弟的大小 if(num[j]num[j+1]) { j=j+1; } } //如果兄弟节点的较大值大于父节点 if(num[j]num[i]) { //交换节点值 int temp=num[j]; num[j]=num[i]; num[i]=temp; } i=i-1;}}}//实现堆排序public void sort(){//last代表最后一个节点int last=length-1;while(last0){//将第一个元素到最后一个元素转换成堆this.treeToHeap(last+1);//将根元素交换到last位置的元素上int temp=num[0];num[0]=num[last];num[last]=temp;last=last-1;}}//排序后遍历public void display(){for(int i:num){System.out.println(i);}}public static void main(String[] args) {HeapSort h=new HeapSort();h.accept();h.sort();h.display();}}重庆NIIT

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档