• 插入排序


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

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

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

    采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数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;
        }
    }


  • 相关阅读:
    Bootstrap框架
    前端基础之CSS
    前端知识之HTML内容
    python之路----递归函数
    python控制台输出带颜色文字的方法
    ELK搭建<三>:安装Kibana
    ELK搭建<二>:安装ES插件head
    ELK搭建<一>:搭建ES集群
    前端angular使用crypto-js进行加密
    Mac下全局安装yarn
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564940.html
Copyright © 2020-2023  润新知