说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。
前言
—
01
—
算法思想

02
—
具体实现代码
Select.java
package com.bosen.select;/*** <p>选择排序算法</p>* @author Bosen 2021/5/28 10:29*/public class Select {/** 待排序的数组*/private int[] array;/** 未排序的数据个数*/private int length;/** 最小数的下标*/private int minIndex;private int temp;public Select(int[] array) {this.array = array;this.minIndex = 0;this.length = array.length;}public void sort() {display("初始状态:");for (int i=0; i<length-1; i++) {minIndex = i;for (int j=i+1; j<length; j++) {// 当前数据更小,进行记录if (array[minIndex] > array[j]) {minIndex = j;}}if (minIndex != i) {// 执行数据位置的交换操作temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}display("第"+(i+1)+"轮比较:");}}/** 打印排序信息*/public void display(String msg) {System.out.print(msg);for (int i : array) {System.out.print("\t"+i);}System.out.println();}}
Test.java
package com.bosen.select;public class Test {public static void main(String[] args) {int[] array = {5, 7, 9, 4, 11, 10};Select select = new Select(array);select.sort();}}
输出结果:

03
—
算法优化
04
—
优化后的代码
package com.bosen.select;/*** <p>选择排序算法</p>* @author Bosen 2021/5/28 10:29*/public class Select {/** 待排序的数组*/private int[] array;/** 未排序的数据个数*/private int length;/** 最小数的下标*/private int minIndex;/** 最大数的下标*/private int maxIndex;private int temp;public Select(int[] array) {this.array = array;this.minIndex = 0;this.length = array.length;}public void sort() {display("初始状态:");for (int i=0; i<length/2; i++) {minIndex = i;maxIndex = i;for (int j=i+1; j<length-i; j++) {// 当前数据更小,进行记录if (array[minIndex] > array[j]) {minIndex = j;} else if (array[maxIndex] < array[j]) {maxIndex = j;}}if (minIndex != i) {// 执行数据位置的交换操作temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;// 如果max指向当前数据,则认为当前数据同时为最大和最小的值if (maxIndex == i) {maxIndex = minIndex;}}if (maxIndex != length-1-i) {temp = array[length-1-i];array[length-1-i] = array[maxIndex];array[maxIndex] = temp;}display("第"+(i+1)+"轮比较:");}}/** 打印排序信息*/public void display(String msg) {System.out.print(msg);for (int i : array) {System.out.print("\t"+i);}System.out.println();}}
输出结果:

总结
—
👇长按二维码关注

文章转载自云丶言,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




