Java插入排序

在这里插入图片描述
插入排序解析与实现代码:

/**
 * 插入排序
 * 算法分析:
 *      插入排序最好的情况是序列已经是升序排列了,在这种情况下,需要进行 N-1 次比较即可,时间复杂度为 O(N),
 *      最坏的情况是序列降序排列,这时候时间复杂度为 O(N^2)。因此插入排序不适合对于数据量比较大的排序应用。
 *      但是如果需要排序的数据量很小(如小于千),那么插入排序还是一个不错的选择。
 *      插入排序平均时间复杂度为 O(N^2),但是它要比冒泡排序快一倍,比选择排序还要快一点,经常被用在较复杂的排序算法的最后阶段,例如快速排序。
 * 算法是稳定的,假设 a=b,且 a 在 b 的前面,其排序位置必然比 b 先确定,而后面再插入 b 时,必然在 a 的后面,所以是稳定的。
 * 空间复杂度为 O(1),不需要额外的空间。
 */
public class _03InsertExample {
    public static void main(String[] args) {
        //插入排序
        int[] source = {4,2,3,1,7,9};
        InsertSort(source);
    }

    /**
     *插入排序的实现步骤为:
     *      从第一个元素开始,该元素可以认为已经被排序 ->
     *      取出下一个元素,在已经排序的元素序列中从后向前扫描 ->
     *      如果该元素小于前一个元素,则将两者调换,再与前一个元素比较–>
     *      重复第三步,直到找到已排序的元素小于或者等于新元素的位置 ->
     *      将新元素插入到该位置中 ->
     *      重复第二步
     *
     * 总结:取出一个元素作为一个数组,向该数组插入排序,比前面一个小,交换,再小,再交换
     */
    private static void InsertSort(int[] source) {
        int temp;
        for (int i = 1; i < source.length; i++) {
            for (int j = i; (j > 0) && (source[j]<source[j-1]) ; j--) {
                temp = source[j];
                source[j] = source[j-1];
                source[j-1] = temp;
            }
        }
        PrintUtil.printlnArray(source);
    }
}

其他算法:

Java二分查找法
Java冒泡排序
Java选择排序
Java插入排序
Java希尔排序
Java计数排序
Java快排算法
Java归并排序
Java堆排序
动图演示

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页