排序算法---插入排序

Posted c-supreme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法---插入排序相关的知识,希望对你有一定的参考价值。

  前面写了选择排序的原理和实现。现在来写一下插入排序的实现

插入排序的原理和实现

  通常人们在整理桥牌的方法是一张一张的来,将每张牌插入到其他已经有序的牌中的适当位置。在计算机当中,为了给要插入的元素(新的牌)腾出的空间,我们需要将其余所有的元素在插入之前都向右移动一位。这种算法叫做插入排序。

  与选择排序一样,当前索引的左边的所有元素都是有序的。但是它们的最终位置还不是确定的(因为当前索引的右边的元素有可能比左边的有些元素小,这时候就需要调整位置)。但是党索引到达数组的右端时,排序就完成了。

  下面是实现:

package sort;

public class Insertion {
    public static void sort(Comparable[] a){
        int N = a.length;
        for (int i = 1; i < N; i++){
            for (int j=i; j > 0 && less(a[j], a[j-1]); j--){//如果后一个数比前一个数小,则交换位置
                exch(a,j, j-1);
            }
        }
    }
    private static boolean less(Comparable v, Comparable w){
        return v.compareTo(w) < 0; //if v < w  v.compareTo(w) return -1 , then function return true;
    }
    private static void exch(Comparable[] a, int i, int j){
        Comparable t = a[i];
        a[i] = a[j];
        a[j] = t;
    }

    public static  boolean isSorted(Comparable[] a){
        for (int i = 1; i < a.length; i ++){
            if(less(i, i+1) ) return false;
        }
        return true;
    }
}

 

以上是关于排序算法---插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

《算法》笔记 3 - 选择排序插入排序希尔排序

三大基础排序算法(冒泡排序,选择排序,插入排序)

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

插入排序算法详解及代码实现