选择排序(直接选择排序、堆排序)——Java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了选择排序(直接选择排序、堆排序)——Java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3135字,纯文字阅读大概需要5分钟。
内容图文
![选择排序(直接选择排序、堆排序)——Java](/upload/InfoBanner/zyjiaocheng/1199/aeff7b5fb41845b0a3a2e65988b954db.jpg)
![技术分享](/upload/getfiles/default/2022/11/10/20221110104842885.jpg)
public static void main(String[] args) { int[] nums={57,68,59,52}; sort(nums); } public static void sort(int[] nums) { for (int i = 0; i < nums.length; i++) { int min=nums[i]; int n=i;//最小数的索引 for (int j = i+1; j < nums.length; j++) { if (nums[j]<min) { //找出最小数 min=nums[j]; n=j; } } nums[n]=nums[i]; nums[i]=min; } }
(2)堆排序
1.定义
2、实例
初始序列:46,79,56,38,40,84
建堆:
交换,从堆中踢出最大数
public static void main(String[] args) { int[] nums={46,79,56,38,40,84}; int len=nums.length; //循环建堆 for (int i = 0; i < nums.length-1; i++) { //建堆 buildMaxHeap(nums,len-1-i); //交换堆顶和最后一个元素 swap(nums,0,len-1-i); System.out.println(Arrays.toString(nums)); } } /** * 对nums数组中0到lastIndex建大顶堆 */ public static void buildMaxHeap(int[] nums,int lastIndex) { //从lastIndex处节点(最后一个节点)的父节点开始 for (int i = (lastIndex-1)/2; i >=0; i--) { //k保存正在判断的节点 int k=i; //如果当前K节点的子节点存在 while (k*2+1<=lastIndex) { //k节点的左节点的索引 int binggerIndex=2*k+1; //如果biggerIndex小于lastIndex,即biggerIndex+1代表的k节点的右子节点存在 if (binggerIndex<lastIndex) { //如果右子节点的值较大 if (nums[binggerIndex]<nums[binggerIndex+1]) { binggerIndex++; } } //如果K节点的值小于其较大的子节点的值 if (nums[k]<nums[binggerIndex]) { //交换他们 swap(nums, k, binggerIndex); //将biggerIndex赋予K,开始While循环的下一次,重新保证k节点的值大于其左右子节点的值 k=binggerIndex; } else { break; } } } } public static void swap(int[] nums,int i,int j) { int temp=nums[i]; nums[i]=nums[j]; nums[j]=temp; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/zzc8265020/article/details/47834943
内容总结
以上是互联网集市为您收集整理的选择排序(直接选择排序、堆排序)——Java全部内容,希望文章能够帮你解决选择排序(直接选择排序、堆排序)——Java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。