Java选择排序的方法是什么
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Java选择排序的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java选择排序的方法是什么"吧!public class S
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
互联网科技有限公司经营范围
金诺互联网科技
深圳科技互联网
齐家互联网科技
世界互联网领先科技成果
互联网科技公司名称
互联网金融监管科技
欧洲十大科技互联网公司
花神(南京)互联网科技有限公司
佛山市拉法互联网科技有限公司
工业互联网展湾科技股份有限公司
科技互联网的核心竞争力
互联网方面的科技前沿
元气玛特互联网科技公司是外包吗
江苏互联网智能科技软件
上海同邻互联网科技有限公司规模
全球科技与互联网公司市值变化
中国互联网公司的科技投入
互联网时代高科技布局
华人运通互联网科技公司
美国互联网保险保险科技
互联网科技有限公司经营范围
郑州华宇互联网科技
上海亿帐通互联网科技
卫星互联网科技股票
科技互联网的估值
贵州叶脉互联网科技有限公司所属行业
崇明区互联网教育科技售后服务
上海京穆互联网科技有限公司
中国科技和美国互联网