排序算法之选择排序

思路:

选择排序是假定第一个位置上的数是最小的,赋给min和minIndex,然后将其余的数与它比较,如果找到更小的,就把min和minIndex替换掉。那么第一轮就将最小的值以及下标找到了,将最小值与arr[0]进行交换

 依次下去,每一轮都将未排序中最小的往前面排,需要arr.length - 1轮

 代码:

复制代码
 1     /**
 2      * 选择排序
 3      * @param arr
 4      */
 5     public static void selectSort(int[] arr) {
 6         if (arr == null || arr.length == 0) {
 7             return;
 8         }
 9         //共arr.length - 1趟
10         for (int i = 0; i < arr.length - 1; i++) {
11             //假定第i个位置上的数是未排序中最小的
12             int min = arr[i];
13             int minIndex = i;
14             //将min与剩下的数进行比较
15             for (int j = i + 1; j < arr.length; j++) {
16                 //如果min不是未排序中最小的,那将更小的那个值赋给min
17                 if (min > arr[j]) {
18                     min = arr[j];
19                     minIndex = j;
20                 }
21             }
22             //如果未排序中最小的值min不是arr[i],将arr[i]赋给arr[minIndex],将min赋给arr[i]
23             if (minIndex != i) {
24                 arr[minIndex] = arr[i];
25                 arr[i] = min;
26             }
27         }
28     }
复制代码

 

posted @   Java厨师长  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示