基本思想

选择排序首先遍历列表,并且将最小的元素与第一个元素进行比较,随后遍历剩余的元素并将次小的元素与第二个元素进行比较,依次类推。选择排序是和冒泡排序差不多的一种排序。和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换。

代码实现

package com.csdhsm.sort;

/** 
 * @Title: SelectSort.java
 * @Package: com.csdhsm.sort
 * @Description 选择排序
 * @author Han
 * @date 2016-4-3 下午3:44:33 
 * @version V1.0
 */ 
      
public class SelectSort {
    
    public void sort(int[] arr,int len){

        
        for(int i=0;i<len-1;i++){
            
            //记录最小元素的下标
            int min = i;
            
            for(int j=i+1;j<len;j++){
                
                if(arr[j] < arr[min]){
                    
                    min = j;
                }
            }
            /**
             * 将最小值交换至前端
             */
            int temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
}

效率分析

不稳定

空间复杂度:O(1)

时间复杂度:O(n2)

最坏情况:O(n2) 第一个元素为最大元素,其余元素正序,需要交换n-1个元素(如:4 3 2 1)

最好情况:O(n2) 正序,不需要交换元素

 posted on 2016-04-03 15:55  韩思明  阅读(173)  评论(0编辑  收藏  举报