选择排序

选择排序(Selection Sort)

  1. 选择排序原理
          在每一次的遍历中,都假定第一个索引处的值为最小元素,在与后面索引处的值分别进行比较,如果当前索引的值大于某个索引处的值,则假定其索引处的值为最小值,在遍历完成后找到最小值所在的索引。再交换最小值索引和第一个位置的索引。再重复上面的操作,完成排序。
  2. 选择排序代码
public class SelectSort {
    private static boolean greater(Comparable v, Comparable w){
        return v.compareTo(w)>0;
    }

    private static void exch(Comparable[] a,int i,int j){
        Comparable temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }

    public static void sort(Comparable[] a){
        //外层决定排序的次数
        for (int i = 0;i<a.length-1;i++){
            //定义一个变量,记录最小元素所在的索引,默认参与选择排序的第一个元素所在的位置为最小元素。
            int min = i;
            //内层决定比较的次数
            for (int j = i+1;j<a.length;j++){
                //比较最小索引处的值和j索引处的值
                if (greater(a[min],a[j])){
                    min = j;
                }
            }
            exch(a,i,min);
        }
    }
}

  1. 选择排序的时间复杂度和稳定性
    选择排序的时间复杂度为:O(n²)
    选择排序的稳定性:选择排序时不稳定的算法
posted @ 2020-07-19 17:53  zuzuzu_code  阅读(110)  评论(0)    收藏  举报