天天看点

算法之插入排序

所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。

由于需要频繁的操作以及打印数组,先写一个小的数组工具类。代码如下:

算法之插入排序

public class arrayutils {  

    public static void printarray(int[] array) {  

        system.out.print("{");  

        for (int i = 0; i < array.length; i++) {  

            system.out.print(array[i]);  

            if (i < array.length - 1) {  

                system.out.print(", ");  

            }  

        }  

        system.out.println("}");  

    }  

}  

从数组的第二个元素开始,取得当前待处理的元素,插入到当前元素之前的子数组里面,直到数组的末尾。插入排序的java实现以及测试代码如下:

算法之插入排序

public class insertsorttest {  

    public static void insertsort(int[] array) {  

        if (array == null || array.length < 2) {  

            return;  

        for (int i = 1; i < array.length; i++) {  

            int currentvalue = array[i];  

            int position = i;  

            for (int j = i - 1; j >= 0; j--) {  

                if (array[j] > currentvalue) {  

                    array[j + 1] = array[j];  

                    position -= 1;  

                } else {  

                    break;  

                }  

            array[position] = currentvalue;  

    public static void main(string[] args) {  

        int[] array = { 3, -1, 0, -8, 2, 1 };  

        arrayutils.printarray(array);  

        insertsort(array);