Java选择排序的方法是什么
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,本篇内容主要讲解"Java选择排序的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java选择排序的方法是什么"吧!public class S
千家信息网最后更新 2024年11月18日Java选择排序的方法是什么
本篇内容主要讲解"Java选择排序的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java选择排序的方法是什么"吧!
public class SelectSort { public static void main(String[] args) { int[] nums = {49,38,65,97,76,13,27,49};// simpleSelectSort(nums);// treeSelectSort(nums); heapSelectSort(nums); for (int num:nums) { System.out.print(num+"\t"); } }/**简单排序处理流程(1)从待排序序列中,找到关键字最小的元素;(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。**/ static void simpleSelectSort(int[] nums){//7,6,3,4,5 for (int i = 0; i < nums.length; i++) { int minIndex = i; for (int j = i+1; j < nums.length; j++) { if (nums[minIndex]>nums[j]) { minIndex = j; } } if (minIndex!=i) { int temp = nums[i]; nums[i] = nums[minIndex]; nums[minIndex] = temp; } } } static void treeSelectSort(int[] nums){//19 , 38 , 65 ,97 , 76 ,13 , 27 , 49 int len = nums.length; int treeSize = 2*len - 1; //满二叉树的节点数 int low = 0; int[] tree = new int[treeSize];//临时的树存储空间 //由后向前填充此树,索引从0开始 for (int i = len -1,j = 0;i >= 0;--i,j++){//填充叶子节点 tree[treeSize - 1 - j] = nums[i]; } for (int x:tree) { System.out.print(x+"\t"); } System.out.println(); for (int i = treeSize - 1; i > 0; i -=2){//填充非终端节点// System.out.println(i+"---"+((i - 1)/2)); tree[(i-1)/2] = (tree[i - 1] < tree[i] ? tree[i - 1] : tree[i]); } for (int x:tree) { System.out.print(x+"\t"); } System.out.println(); //不断移走最小节点 int minIndex; while (low < len){ int min = tree[0]; //最小值 nums[low++] = min; minIndex = treeSize - 1; while(tree[minIndex] != min){//不断移走最小节点 minIndex--; } tree[minIndex] = Integer.MAX_VALUE;//设置一个最大值标志 //找到其兄弟节点 while (minIndex > 0){//如果其还有父节点 -->该步骤旨在重新生成一颗树 if (minIndex % 2 == 0){//如果是右节点 tree[(minIndex - 1)/2] = (tree[minIndex - 1] < tree[minIndex] ? tree[minIndex - 1] : tree[minIndex]); minIndex = (minIndex-1)/2; } else {//如果是左节点 tree[minIndex/2] = (tree[minIndex] < tree[minIndex + 1] ? tree[minIndex] : tree[minIndex + 1]); minIndex = minIndex/2; } }// for (int x:tree) {// System.out.print(x+"\t");// }// System.out.println(); } } static void heapSelectSort(int[] nums){ int len = nums.length; //构建堆 for (int i = (len -1)/2; i >= 0; i--) { heapAdjust(nums,i,len); } //输出堆顶元素并调整建新堆的过程 int count = len-1; while(count > 0 ){ //交换树根与最后一个值 swap(nums,0,count); count -- ; heapAdjust(nums,0,count); } } static void heapAdjust(int[] nums, int i, int len) { int parent = nums[i]; for (int j = (i+1)*2 - 1; j < len; j=(j+1)*2 - 1) { if (j < len -1 && nums[j] < nums[j+1]){ ++j; } if (parent > nums[j]){ break; } nums[i] = nums[j]; i = j; } nums[i] = parent; } /** * 交换数组中两元素的值 */ private static void swap(int[] nums,int i,int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }}
到此,相信大家对"Java选择排序的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
元素
排序
节点
方法
最小
选择
关键
关键字
内容
序列
学习
实用
更深
不断
兴趣
叶子
实用性
实际
操作简单
数组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发什么都不懂好学吗
达蒙数据库操作日志
北京华新传媒网络技术有限公司
魔兽世界怎么显示服务器不兼容
防疫中心核酸数据库
网络安全法是特别法吗
网络安全预防人防联防
天气预报安卓软件开发
系统如何查看是否已安装数据库
网络安全骗子套取交易信息
闻道网络安全插画
关于网络安全现代诗
如果一张数据库中含有6
杭州湖猫网络技术有限公司
数据库驱动中url命名方式
未成年网络安全预案
读数据库视图
数据库本身能做加密么
plsql数据库时间配置
中国ai服务器总量
h互联网科技委员会
网络技术表示层的数据单位
大专读的计算机网络技术
服务器管理细则
软件开发与管理基础知识
数据库 远程调试 防火墙
手机改数据库
汽车灯光秀软件开发公司
怀旧服服务器的密码是多少
语音社交软件开发