算法图解:选择排序

选择排序,时间复杂度O(n*n),查询效率慢。

步骤:

假设数组int [] arr = {5,3,6,2,1,0},按照从小到大排序。

1:取第一个位置的数为最小值,最小值所在的位置为0,即 min = 5, min_index = 0;

2:跟arr第1个位置的值开始 比较,如果找到最小值,即 arr[1]

................................

接着用min=3,第3个位置的值比较,如果找到最小值,即 arr[2]

................................

接着用min=2,跟第4位置的值比较,如果找到最小值,即arr[4]

创建一个新的数组,即newArr,存放最小值 1,将arr 去除1,重复1,2。



public void testSelectSort(){

        LinkedList arr = new LinkedList(Arrays.asList(5,3,6,2,1,0));

        List newArr = new LinkedList();
        while (arr.size()>0){
            int min_index = findSmallest(arr);
            newArr.add(arr.get(min_index));
            arr.remove(min_index);
        }

        System.out.println("====" + JackJsonUtil.toJson(newArr));

    }


     public int findSmallest(LinkedList arr){
         int min = arr.getFirst();
         int min_index = 0;

         for (int i=1;i




你可能感兴趣的:(图解算法)