用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-20测试人员都是画画大神,让我看看谁还不会用代码图?
- 2024-05-20年薪百万的程序员都在用的摸鱼方式……
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了