排序算法

上一篇 / 下一篇  2010-03-16 16:43:36 / 个人分类:数据结构

排序的基本概念
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。
(1)排序的分类
1.按是否涉及数据的内、外存交换分

     在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内部排序(简称内排序);反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序
 注意:
     ① 内排序适用于记录个数不很多的小文件
     ② 外排序则适用于记录个数太多,不能一次将其全部记录放人内存的大文件。
2.按策略划分内部排序方法
     可以分为五类:插入排序、选择排序、交换排序、归并排序和分配排序。
(2)排序算法的基本操作
     大多数排序算法都有两个基本的操作:
  (1) 比较两个关键字的大小;
  (2) 改变指向记录的指针或移动记录本身。
 注意:
     第(2)种基本操作的实现依赖于待排序记录的存储方式。
(3)排序算法性能评价
a.评价排序算法好坏的标准
  评价排序算法好坏的标准主要有两条:
     ① 执行时间和所需的辅助空间
     ② 算法本身的复杂程度
b.排序算法的空间复杂度
  若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间是O(1),则称之为就地排序(In-PlaceSou)。
  非就地排序一般要求的辅助空间为O(n)。
c.排序算法的时间开销
  大多数排序算法的时间开销主要是关键字之间的比较和记录的移动。有的排序算法其执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态。
(4)排序算法稳定性
   1) 稳定的:如果存在多个具有相同排序码的记录,经过排序后,这些记录的相对次序仍然保持不变,   则这种排序算法称为稳定的。
    插入排序、冒泡排序、归并排序、分配排序(桶式、基数)都是稳定的排序算法。
    2)不稳定的:否则称为不稳定的。
    直接选择排序、堆排序、shell排序、快速排序都是不稳定的排序算法。

TAG:

 

评分:0

我来说两句

Open Toolbar