15、排序算法-选择排序
来源:https://www.bilibili.com/video/BV1B4411H76f?p=39
一、思路
选择排序:选择合适的数据放到合适的位置。
如果想从小到大排列,那么从所有的n个数据中选择最小的一个与下标为0的元素交换;之后从剩下的n-1个数据中,选最小的与下标为1的元素交换,这样依次迭代下去循环n-1次。
例如:[101,34,119,1]
第一趟:4个数据中,1最小,和101交换,[1,34,119,101]
第二趟:后3个数据,34最小,不用交换,[1,34,119,101]
第三趟:后2个数据,101最小,与119交换,[1,34,101,119]
二、实现
1 //选择排序 2 public class SelectSort { 3 public static void main(String[] args) { 4 int[] arr = {101,34,119,1}; 5 System.out.println(Arrays.toString(arr)); 6 7 selectSort(arr); 8 System.out.println(Arrays.toString(arr)); 9 10 } 11 12 public static void selectSort(int[] arr){ 13 for (int i = 0; i < arr.length - 1; i++) { 14 int minIndex = i; 15 int min = arr[i]; 16 for (int j = i + 1; j < arr.length ; j++) { 17 if(min > arr[j]){ 18 min = arr[j]; 19 minIndex = j; 20 } 21 } 22 if(minIndex != i){ 23 arr[minIndex] = arr[i]; 24 arr[i] = min; 25 } 26 } 27 } 28 }
结果
[101, 34, 119, 1]
[1, 34, 101, 119]