数据结构与算法——简单选择排序
简单选择排序算法就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1 ≤ i ≤ n)个记录交换之。
1 public class SelectSort { 2 public void selectSort(int[] arr) { 3 if(arr==null || arr.length==1) { 4 return; 5 } 6 int i,j,min; 7 int len=arr.length; 8 for(i=0;i<len;i++) { 9 min=i; 10 for(j=i+1;j<len;j++) { 11 if(arr[min]>arr[j]) { 12 min=j; 13 } 14 } 15 if(i!=min) { 16 swap(arr,i,min); 17 } 18 } 19 } 20 public void swap(int[] arr,int i,int j) { 21 int temp=arr[i]; 22 arr[i]=arr[j]; 23 arr[j]=temp; 24 } 25 }
简单选择排序算法的时间复杂度分析
从简单选择排序的过程来看,它最大的特点就是交换移动数据次数相当少,这样也就节约了相应的时间。分析它的时间复杂度发现,无论最好最差的情况,其比较次数都是一样的多,第i趟排序需要进行n-i次关键字的比较,此时需要比较n-1+n-2+...+1=(n(n-1))/2次。而对于交换次数而言,当最好的时候,交换次数为0,最差的时候,也就是初始降序时,交换次数为n-1,基于最终的排序时间是比较与交换的次数总和。因此,总的时间复杂度为O(n2)。(简单选择排序算法在性能上要略优于冒泡排序)
算法的稳定性:简单选择排序算法是稳定的
posted on 2018-03-31 22:51 Joyce&wang 阅读(210) 评论(0) 收藏 举报
浙公网安备 33010602011771号