zoukankan      html  css  js  c++  java
  • 算法笔记--直接插入排序


    直接插入排序是插入排序的一种,算法简单,适用于数据量小的情况。


    1. 算法思想

              每次从待排序序列中取出一个元素k,插入到已经排好序的序列A[0...i]中合适的位置。插入时k依次由后向前比较,小于k的元素后移。

    2. 时间复杂度

              最好情况 O(n):序列正序有序,只需比较n次,不需移动元素

              最坏情况 O(n^2):序列逆序有序,每次插入一个元素均需移动前面的所有元素

    3. 空间复杂度 O(1)

              就地排序,辅助空间为常数级

    4. 稳定性

              稳定。将k插入到第一个不大于k的元素之后,不改变同值元素的顺序

    5. 代码实现(C语言)

    void InsertSort(int *A, int n)
    {
    	int i, j;
    	int tmp;
    
    	for (i = 1; i < n; ++i)
    	{
    		j = i;
    		tmp = A[j];
    
    		while (j > 0 && tmp < A[j - 1])
    		{
    			A[j] = A[j - 1];
    			--j;
    		}
    		
    		A[j] = tmp;
    	}
    }


  • 相关阅读:
    P1019 单词接龙
    P1219 八皇后
    Find a way
    P1056 排座椅
    P1067 多项式输出
    关于前缀和,A
    洛谷P1223
    洛谷P1803
    洛谷P1208
    常用方法 Excel转换为DataSet
  • 原文地址:https://www.cnblogs.com/ltxdzh/p/3960149.html
Copyright © 2011-2022 走看看