选择排序详解(Java实现)
一、基本思想
简单选择排序是最简单直观的一种算法,每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。
在算法实现时,每一轮确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。其实我们很容易发现,在还未完全确定当前最小元素之前,这些交换都是无意义的。
因此可以通过设置一个变量min,每一次比较出存储较小元素,并且记录当前元素的数组下标,当本轮循环结束之后,那这个变量min存储的就是当前最小元素的下标,此时再执行交换操作,以此确定本轮遍历的最小元素放到了数组前部。
二、算法分析
简单选择排序通过上面优化之后,无论数组原始排列如何,比较次数是不变的;对于交换操作,在最好情况下也就是数组完全有序的时候,无需任何交换移动,在最差情况下,也就是数组倒序的时候,交换次数为n-1次。综合下来,时间复杂度为O(n2)
三、编码实现
package sort; public class SelectSort { public static void main(String[] args) { //模拟数据 int[] array = {52,63,14,59,68,35,8,67,45,99}; System.out.println("原数组:"); for (int i : array) { System.out.print(i+" "); } System.out.println(); selectSort(array); System.out.println("排序后:"); for (int i : array) { System.out.print(i+" "); } } public static void selectSort(int[] arr){ for(int i = 0; i < arr.length-1; i++){ int min = i; for(int j = i+1; j <arr.length ;j++){ if(arr[j]<arr[min]){ min = j; } } if(min!=i){ swap(arr, i, min); } } } //完成数组两元素间交换 public static void swap(int[] arr,int a,int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } }
四、结果值查看
原数组: 52 63 14 59 68 35 8 67 45 99 排序后: 8 14 35 45 52 59 63 67 68 99
热门文章
- 开个拼多多无货源店能挣钱吗(开拼多多无货源网店)
- 动物疫苗前景分析报告 动物疫苗前景分析报告怎么写
- 大型饲料颗粒机生产厂家(饲料颗粒机十强企业)
- 第2章 图灵的计算王国
- 动物疫苗打一次管多长时间有效果 动物疫苗打一次管多长时间有效果呢
- 「2月8日」最高速度19M/S,2025年Hiddify Next每天更新免费节点订阅链接
- 动物疫苗去哪买比较好 动物疫苗去哪买比较好一点
- 「1月10日」最高速度19.1M/S,2025年Hiddify Next每天更新免费节点订阅链接
- 神话Eric透露忠载婚礼现场,“申彗星当主持,金烔完唱祝歌”(神话的eric买下神话)
- 动物疫苗去哪里买便宜点 动物疫苗去哪里买便宜点呢