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;
        }
    }


  • 相关阅读:
    Qt uchar * 转 QImage
    WIN10 蓝牙连接音箱之后,音量调节无效,音量从1-100,声音一样大,都是最大声,可以静音(解决方案)
    OpenGL 保存bmp图像
    Qt 使用自带的OpenGL模块开发程序
    OpenCVSharp介绍
    OpenCV介绍
    OpenAL介绍
    OpenCL介绍
    OpenGL介绍
    Qt 无法打开包括文件:“QGLWidget”: No such file or directory
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564940.html
Copyright © 2011-2022 走看看