直接插入排序(java实现)

这几天看排序算法,网上大多数排序算法的解释都是“过于专业”,导致一时半会看不明白到底在说什么玩意。现在总结下几大排序算法(java实现)

1.直接插入排序

说的简单点,就是一组无序序列{A1,A2,........An} 先取出A1,然后从A2与A1比较,比较完之后序列状况是{A1,A2}{A3..........An},  其中{A1,A2}有序, 然后取出A3 ,放到{A1,A2}有序序列合适位置,导致{A1,A2,A3}{A4........An}。重复这个过程,直到取出An放入{A1,A2........An-1}有序序列中。

java实现代码如下(利用LinkedList作为辅助序列)

直接插入排序(java实现)
    /**
     * 直接插入排序
     * @param arrays 需要排序的序列
     */
    public static void sort(int[] arrays){
        if(arrays == null || arrays.length == 0){
            return;
        }
        
        //辅助序列
        LinkedList<Integer> list = new LinkedList<Integer>();
        //先取出无序序列的第一个元素
        list.add(arrays[0]);
        //从第二个元素依次遍历,放入辅助序列(有序)的合适位置
        for(int index = 1; index<arrays.length; index++){
            for(int listIndex = 0;listIndex<list.size();listIndex++){
                //一直遍历,直到找到比自己大的数,放在这个数前面
                if(arrays[index] < list.get(listIndex)){
                    list.add(listIndex, arrays[index]);
                    break;
                }
                //如果遍历到末尾还没有找到比自己大的数,直接放最后一个位置
                if(listIndex==list.size()-1 && list.get(listIndex) < arrays[index]){
                    list.add(arrays[index]);
                }
            }
        }
        for(int i = 0; i<list.size();i++){
            arrays[i] = list.get(i);
        }
    }
直接插入排序(java实现)

直接插入排序(java实现),布布扣,bubuko.com

直接插入排序(java实现)

上一篇:【C++进阶】空指针 NULL指针 零指针 野指针 详解


下一篇:C++赋值运算符、函数调用运算符、下标运算符(“=”、“()”、“[]”)重载