• 插入排序


    对于数组A[N]的插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P上的元素已为排序状态。实际上插入排序利用了这样的事实:位置0到位置P-1上的元素是已排过序的。在第P趟,我们将位置P上的元素向左移动到它在前P+1个元素的正确位置上。插入排序的过程可以用下图表示。

    具体代码如下。由于嵌套循环的每一个都花费N次迭代,因此插入排序复杂度为O(N2)。

     1 #include <stdio.h>
     2 
     3 #define ElementType int
     4 
     5 void PrintArray(ElementType A[], int N)
     6 {
     7     int i;
     8     for (i = 0; i < N; i++)
     9     {
    10         printf("%d ", A[i]);
    11     }
    12     printf("
    ");
    13 }
    14 
    15 void InsertSort(ElementType A[], int N)
    16 {
    17     int j, P;
    18 
    19     ElementType Tmp;
    20     for (P = 1; P < N; P++)
    21     {
    22         Tmp = A[P];
    23         //for循环作用是将大于A[P]的逐个右移,小于A[P]的不做移动
    24         for (j = P; j > 0 && A[j-1] > Tmp; j--)
    25             A[j] = A[j-1];
    26         //找到合适位置将A[P]插入
    27         A[j] = Tmp;
    28         printf("After %d sort: ", P);
    29         PrintArray(A, N);
    30     }
    31 }
    32 
    33 
    34 int main()
    35 {
    36     int i, N;
    37     scanf("%d", &N);
    38     int A[N];
    39     for (i = 0; i < N; i++)
    40     {
    41         scanf("%d", &A[i]);
    42     }
    43     InsertSort(A, N);
    44 
    45     return 0;
    46 }
  • 相关阅读:
    'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
    flask os.environ 的作用
    flask 中xx.init_app(app)方法
    win10安装ubuntu双系统遇到的问题
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    常用正则
    使用elementUI动态增减表单项 且 使用自定义校验
  • 原文地址:https://www.cnblogs.com/bournet/p/3998871.html
Copyright © 2020-2023  润新知