天天看点

Java 插入排序(Insertion Sort)

    • 插入排序
    • 算法描述
    • 代码Java版

插入排序

插入排序(Insertion Sort)的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

算法描述

具体算法描述如下:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到下一位置中
  6. 重复步骤2~5

代码(Java版)

public int[] insertionSorting(int[] A) {
    if (A == null) {
        return A;
    }
    for (int i = ; i < A.length; i++) {
        for (int j = i; j > ; j--) {
            if (A[j] < A[j - ]) {
                //交换数据
                int temp = A[j];
                A[j] = A[j - ];
                A[j - ] = temp;
            } else {
                //此时插入的数据已经到达正确位置
                break;
            }
        }
    }
    return A;
}