算法很难?三分钟带你掌握经典算法「选择排序」
一、选择排序介绍
选择排序(Selection sort)是一种简单直观的排序算法。
二、算法思想
第 1 趟 从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置;
然后再从剩余的未排序元素中寻找到最小(大)元素,放到已排序的序列的末尾。
以此类推,直到全部待排序的数据元素的个数为零,元素全部有序。
三、实现过程
规律:
第 1 趟:从n个数据中找出最小的数据和第一个数据交换;
第 2 趟:从第二个数据开始的n-1个数据中再选出最小的数据与第二个数据交换;
以此类推…
第 i 趟,则从第 i 个数据开始的 n-i+1 个数据中选出最小的数据与第i个数据交换,直到整个序列有序。
四、代码实现
publicclass SelectSort {publicstaticvoidmain(String[] args) { System.out.println("输入要排序的值,输入的每个值用逗号隔开:"); Scanner input =newScanner(System.in);Stringstr = input.nextLine();// 将字符串按照","拆分成字符串数组String[] strArray = str.split(",");// 新建数组用来存储拆分出来的每个值int[]array=newint[strArray.length];// 给数组循环遍历赋值for(inti =0; i < strArray.length; i++) {array[i] = Integer.parseInt(strArray[i]); } System.out.println("排序前的数组:"+ Arrays.toString(array));// 排序selectSort(array); System.out.println("排序后的数组:"+ Arrays.toString(array)); }/**
* 选择排序
*
* @param array 待排序的数组
*/privatestaticvoidselectSort(int[]array) {//判断数组为空或为一个元素的情况if(null ==array||array.length <=1) {return; }for(inti =0; i array[j]) { temp =array[j]; tempIndex = j; } }// 如果临时变量发生改变,则说明有比当前外层循环位置更小的元素,需要将这两个元素交换位置if(tempIndex != i) {array[tempIndex] =array[i];array[i] = temp; } System.out.println(" 第"+ (i +1) +"趟后:"+ Arrays.toString(array)); } }}
五、执行结果:
六、更多算法学习
帮忙转发文章后,关注私信回复【学习】即可获取算法相关视频及文档