常见排序算法之(一)------选择排序
选择排序的算法
基本思想:从待排序区中选一个最小的,和待排序区的第一个元素进行交换。
记录待排序区中最小值的索引。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。外层循环控制 选择的趟数。
内层循环控制一趟的查找最小索引的过程,
最后 和待排序区的第一个元素进行交换。
private static void selectSort(int[] arr){ if(arr == null) return; int len = arr.length; if(len == 0) return; // 外层循环控制 选择的趟数。 for(int i=0;i<len-1;i++){//i 代表着待排序区的第一个元素。 //min 保存着待排序区的最小索引 int min = i; // 内层循环控制一趟的查找最小索引的过程, for(int j = i+1;j<len;j++){ if(arr[j] < arr[min]){ min = j; } } // 最后 和待排序区的第一个元素进行交换。 if(min != i){ int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } }
选择排序的分析
空间效率:显然简单选择排序只需要一个辅助空间。
时间效率:在简单选择排序中,所需移动元素的次数较少,在待排序序列已经有序的情况下,
简单选择排序不需要移动元素,在最坏的情况下,即待排序序列本身是逆序时,则移
动元素的次数为 3(n-1)。然而无论简单选择排序过程中移动元素的次数是多少,在任何情况
下,简单选择排序都需要进行n(n-1)/2 次比较操作,因此简单选择排序的时间复杂度为Ο(n2 )。
稳定性:不稳定

更多精彩