zoukankan      html  css  js  c++  java
  • Algorithms

    印象

    图1 插入排序过程

    思想

    插入排序(Insertion Sort)的主要思想是不断地将待排序的元素插入到有序序列中,是有序序列不断地扩大,直至所有元素都被插入到有序序列中。

    分析

    • 时间复杂度:
      • 最优时间: O((n-1))
      • 最坏时间: O((frac{1}{2}n(n-1)))
      • 平均时间: O((n^2))

    插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千;或者若已知输入元素大致上按照顺序排列,那么插入排序还是一个不错的选择。 插入排序在工业级库中也有着广泛的应用,在STL的sort算法和stdlib的qsort算法中,都将插入排序作为快速排序的补充,用于少量元素的排序(通常为8个或以下)。

    代码示例

    C++

    void insertion_sort(int arr[], int len)
    {
        for (int i = 1; i < len; i++)
        {
            int key = arr[i];
            int j = i - 1;
            while ((j >= 0) && (key < arr[j]))
            {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = key;
        }
    }
    

    参考

    Wikipedia - Insertion sort

  • 相关阅读:
    NOIP 2016 回文日期
    USACO Ski Course Design
    USACO Combination Lock
    USACO 利润Profits
    POJ 3368 Frequent values
    USACO Balanced Lineup
    JDOJ 1065 打倒苏联修正主义
    JDOJ 2174 忠诚
    VIJOS-P1514 天才的记忆
    VIJOS-P1423 最佳路线
  • 原文地址:https://www.cnblogs.com/zdfffg/p/10431121.html
Copyright © 2011-2022 走看看