Java选择排序的方法是什么
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容主要讲解"Java选择排序的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java选择排序的方法是什么"吧!public class S
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
学习网络技术有前景吗
kvm如何对数据库进行监控
服务器每次都要登录怎么办
工行软件开发工作内容
软件开发 证书 ssl
珠海服务软件开发设计
软件开发要求工作量吗
常德软件开发公司哪家好
国家网络安全工作要坚持什么
武汉大学数据库
国际网络安全芯片
数据库技术用什么书
嵌入式软件开发区鲸鱼纹身
xutils创建数据库
西宁城北区思科网络技术学院
一篇文章怎么保存到数据库
anko数据库
重庆服务器机柜厂家虚拟主机
全国网络安全防范
网络安全的劣势
百度云盘网络安全证书
服务器安全狗误拦截
将大量数据导入数据库
嵌入式软件开发项目过程问题
专业级excel软件开发平台
软件开发与应用教程
数据库技术面对的挑战
网络安全教育的意义
互联网软件开发工作内容
jsp怎么删除数据库数据