zoukankan      html  css  js  c++  java
  • (6)插入排序之四 表插入排序

          若希望在排序过程中不移动记录,只有改变存储结构,进行表插入排序。存储结构定义如下:

    #define SIZE 100 //静态链表容量
    typedef
    struct
    {
    string rc; //记录项
    int next; //指针项
    }SLNode; //表结点类型
    typedef struct
    {
    SLNode r[SIZE];
    //0号单元为表头结点
    int length; //链表当前长度
    }SLinkListType; //静态链表类型

          为了方便插入,设数组中下标为“0”的分量为表头结点,并令表头结点记录的关键字取最大整数MAXINT。则表插入排序的过程描述如下:首先将静态链表中数组下标为“1”的分量(结点)和表头结点构成一个循环链表,然后依次将下标为“2”至“n”的分量(结点)按记录关键字非递减有序插入到循环链表中。时间复杂度为O(n^2)理解:和直接插入排序同样的处理方式,只不过不需要移动记录,只要改变next域。表插入排序的结果只是求得一个有序链表,所以只能进行顺序查找。

    算法同直接插入排序。

  • 相关阅读:
    Wx-小程序-使用canvas截图保存
    Wx-小程序-图片预览、保存
    CSS-文本溢出省略号表示
    Wx-小程序-长按复制文本
    Vue-组件通信
    JS-禁用浏览器前进后退
    JS-内置对象和方法
    JS-冒泡排序
    JS-常用方法合集
    Wx-小程序-组件式开发之Vant
  • 原文地址:https://www.cnblogs.com/wanggary/p/2032169.html
Copyright © 2011-2022 走看看