排序算法之选择排序
思路:
选择排序是假定第一个位置上的数是最小的,赋给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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix