用java实现选择排序
2022/2/24 9:51:18
本文主要是介绍用java实现选择排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
选择排序
从数组中找一个最小的值或者最大值,依次和后面的元素进行比较,第一轮比较把数组中第一小的数放到数组索引的第一位,第二轮把数组中第二小的数放在数组的第二位,比较的轮数是数组的长度-1,依次类推,直到排序完成为止.
package com.swlz.code; /* * @Author liuzheng * @Date 2021/10/18 22:24 * @Description 选择排序 * @Since version-1.0 */ import java.io.Serializable; import java.util.Arrays; public class SelectSort implements Serializable{ public static void main(String[] args) { //-1,33,78,56,8 -1,8,33,78,56 ..... int[] arr={33,-1,78,56,8}; // System.out.println(arr.length); selectsort(arr); } //从低到高 升序 第一轮是把数组中第一小的找到,第二轮数把数组中第二小的找到,依次类推.直到排序完成为止 public static void selectsort(int[] arr){//外循环控制轮数,内循环控制交换次数 //使用逐步推导的方法 //第一轮33,-1,78,56,8 -> -1,33,78,56,8 比较的总轮数 for (int i = 0; i <arr.length-1; i++) { //定义变量 int min = arr[i];//假定的最小数为数组中的第一个元素 int minindex = i;//假定最小数的索引 //第一轮 交换的次数 for (int j = i + 1; j < arr.length; j++) { //第一轮,如果假定的数不是数组中最小的数 min是数组中的第一位数默认为最小数 arr[j]数组中的第二位数 //如果数组中第一位数大于数组的第二位数,就把第二数赋值给第一位数,依次,循环往复,直到把最小的数放到第一位为止 if (min > arr[j]) {//说明假定的最小值并不是最小的,后面还有比它小的值 如果要从大到小排序改为<即可 min = arr[j];//重置min(最小值) minindex = j;//重置minindex(最小值的索引是这个) } }//将最小值放在arr[0] 即交换(找到最小值做交换)即:33,-1,78,56,8 // 第一轮后:8,-1,78,56,33(找到最小值8和它交换了)第一轮排序之后 //第一轮结束之后,就把最小值放到数组的第一位,然后第一轮就是后面几个数进行比较, // 就把假定最小是是arr[1]第二位数,依次进行比较,依次类推,第二轮的最小的数就是第二位数, //第一轮后将最小值放在第一位,即交换,第二轮就将第二小的数放在第二位,即交换 if (minindex != i) {//minindex=0; 如果最小值的索引不等于i //将最小值放在arr[i] 即交换 arr[minindex] = arr[i];//最小值的索引 把最小值放到第一个位置arr[0] arr[0] arr[i] = min;//arr[0]=min 第一轮 把最小值放在第一位 第一轮 把第二小的值放在第二位 } } System.out.println(Arrays.toString(arr)); } }
这篇关于用java实现选择排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署