您现在的位置是:首页 >

二分查找排序 排序 - 排序基本概念 (二)

火烧 2021-12-26 14:35:37 1055
排序 - 排序基本概念 (二)   排序算法分析   排序算法的基本操作  大多数排序算法都有两个基本的操作   比较两个关键字的大小    改变指向记录的指针或移动记录本身   注意  第 种基本操

排序 - 排序基本概念 (二)  

  排序算法分析

二分查找排序 排序 - 排序基本概念 (二)

   排序算法的基本操作

  大多数排序算法都有两个基本的操作

  ( ) 比较两个关键字的大小;

  ( ) 改变指向记录的指针或移动记录本身

  注意

  第( )种基本操作的实现依赖于待排序记录的存储方式

   待排文件的常用存储方式

  ( ) 以顺序表(或直接用向量)作为存储结构

  排序过程 对记录本身进行物理重排(即通过关键字之间的比较判定 将记录移到合适的位置)

  ( ) 以链表作为存储结构

  排序过程 无须移动记录 仅需修改指针 通常将这类排序称为链表(或链式)排序;

  ( ) 用顺序的方式存储待排序的记录 但同时建立一个辅助表(如包括关键字和指向记录位置的指针组成的索引表)

  排序过程 只需对辅助表的表目进行物理重排(即只移动辅助表的表目 而不移动记录本身) 适用于难于在链表上实现 仍需

  避免排序过程中移动记录的排序方法

   排序算法性能评价

  ( ) 评价排序算法好坏的标准

  评价排序算法好坏的标准主要有两条

  ① 执行时间和所需的辅助空间

  ② 算法本身的复杂程度

  ( ) 排序算法的空间复杂度

  若排序算法所需的辅助空间并不依赖于问题的规模n 即辅助空间是O( ) 则称之为就地排序(In PlaceSou)

  非就地排序一般要求的辅助空间为O(n)

  ( ) 排序算法的时间开销

  大多数排序算法的时间开销主要是关键字之间的比较和记录的移动 有的排序算法其执行时间不仅依赖于问题的规模 还取决

  于输入实例中数据的状态

  文件的顺序存储结构表示

  #define n l //假设的文件长度 即待排序的记录数目

  typedef int KeyType; //假设的关键字类型

  typedef struct{ //记录类型

  KeyType key; //关键字项

  InfoType otherinfo;//其它数据项 类型InfoType依赖于具体应用而定义

  }RecType;

  typedef RecType SeqList[n+ ];//SeqList为顺序表类型 表中第 个单元一般用作哨兵

  注意

  若关键字类型没有比较算符 则可事先定义宏或函数来表示比较运算

  【例】关键字为字符串时 可定义宏 #define LT(a b)(Stromp((a) (b))< ) 那么算法中 a "可用"lt(a,b)"取代。.lishixinzhi若使

  用C++,则定义重载的算符"<"更为方便。

lishixinzhi/Article/program/sjjg/201311/23809  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码