zoukankan      html  css  js  c++  java
  • 排序_插入排序

     1 void insertSort(LineList R[], int n)
     2 {
     3     int i, j;
     5     for (i = 2; i <= n; i++) 
     6     {
     7         if (R[i].key < R[i - 1].key) 
     8         {
     9             R[0].key = R[i].key;
    11             for (j = i - 1; R[0].key < R[j].key; j--) 
    12             {
    13                 R[j + 1] = R[j];
    14             } 
    16             R[j + 1] = R[0];
    17         }
    18     }
    19 }

    下标从0开始的算法如下:

     1 void insertSort(ElementType A[], int N)
     2 {
     3     int p, i;
     4     ElementType tmp;
     5 
     6     for (p = 1; p < N; p++)
     7     {
     8         /* 取出未排序序列中的第一个元素 */
     9         tmp = A[p];
    10 
    11         /* 依次与已排序序列中元素比较并右移 */
    12         for (i = p; i > 0 && A[i - 1] > tmp; i--)
    13         {
    14             A[i] = A[i - 1];
    15         }
    16 
    17         /* 放进合适位置 */
    18         A[i] = tmp;
    19     }
    20 }

    稳定性:稳定

    复杂度:

    (1)最好:O(N)

    (2)最坏:O(N2)

  • 相关阅读:
    自闭的D7
    D2
    Codeforces Round #531 (Div. 3)
    hello 2019 D
    牛客练习赛36B
    cf954H
    gym102007 E
    Gym 101972
    Gym 101810
    试题 历届试题 青蛙跳杯子(bfs)
  • 原文地址:https://www.cnblogs.com/abc-begin/p/7641047.html
Copyright © 2011-2022 走看看