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

    插入排序是一种简单的类似于冒泡排序的方法。然而,数据交换次数呈线性化,相对比较稳定。

    插入排序的基本思想是不断地将带排序的主键数据插入到有序的序列中,直到所有数据被排序。

    原始数据使用随机函数生成。

    采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。

    数据个数由宏定义给出,也可以轻松地改为输入。

    /*
     * 插入排序算法程序
     */
    
    #include <stdio.h>
    #include<stdlib.h>
    #include <time.h>
    
    #define N 7
    
    void getData(int [], int);
    void outputData(int [], int);
    
    void insertsort(int a[], int n);
    
    int main(void)
    {
      int a[N];
    
      getData(a, N); /* 获得数据放入数组a中 */
    
      printf("Unordered datas: ");
      outputData(a, N);
    
      insertsort(a, N);
    
      printf("In sorted order: ");
      outputData(a, N);
    
      return 0;
    }
    
    /* 插入排序 */
    void insertsort(int a[], int n)
    {
        int i, j, key;
    
        for(i=0; i < n; i++)
        {
            key = a[i];
            j = i - 1;
            while(j >= 0 && a[j] > key) {
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = key;
        }
    }
    
    void getData(int d[], int n)
    {
        time_t t;
        srand((unsigned) time(&t));  /* 设置随机数起始值 */
    
        int i;
        for(i=0; i < n; i++)
            d[i] = rand() % 1000; /* 获得0-999之间的整数值 */
    }
    
    void outputData(int d[], int n)
    {
        int i;
        for (i = 0; i < n; i++)
          printf("%d ", d[i]);
        printf("
    ");
    }

    关键代码:

    /* 插入排序 */
    void insertsort(int a[], int n)
    {
        int i, j, key;
    
        for(i=0; i < n; i++)
        {
            key = a[i];
            j = i - 1;
            while(j >= 0 && a[j] > key) {
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = key;
        }
    }


  • 相关阅读:
    Paperfolding HDU
    I
    2020年8月11日第一次组队训练
    2018ICPC南京I. Magic Potion
    【贪心】纪念品分组
    【贪心】删数问题
    【排序】排名
    小X与队列
    B.T.B.F.
    2018浙江理工大学迎新赛——决赛
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564940.html
Copyright © 2011-2022 走看看