代码改变世界

选择排序

2012-07-29 13:17  coodoing  阅读(231)  评论(0编辑  收藏  举报

1、算法原理介绍:

选择排序思路,第一趟排序:从n个数中选择最小的1个放在第一个位置,第二趟:从剩下的n-1个数中选择一个最小的数放在第2个位置,依次类推。冒泡排序是比较相邻的交换相邻的,而选择排序不是。

2、可视化操作:

3、java代码

   1: static void selectionSort(int[] arr,int len)
   2: {
   3:     int j;
   4:     for(int i=0;i<len;i++)
   5:     {
   6:         j = getMinKey(arr,i);
   7:         if(i!=j)
   8:             swap(arr,j,i);
   9:     }        
  10: }
  11:  
  12: static int getMinKey(int[] arr,int start)
  13: {
  14:     int min = start;
  15:     for(int i =start+1;i<arr.length;i++)
  16:     {
  17:         if(arr[min]>;arr[i])
  18:             min = i;
  19:     }        
  20:     return min;
  21: }

4、时间复杂度

最佳,平均,最坏时间复杂度为:O(n^2)

共需n-1次数据交换