Live2D
Fork me on GitHub

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]

 

posted @ 2020-06-19 10:48  -小二黑-  阅读(195)  评论(0编辑  收藏  举报