您的位置:首页 > 理论基础 > 数据结构算法

【数据结构与算法】——排序综述

2016-09-04 11:23 281 查看

【定义】


         将杂乱无章的数据元素,通过一定的方法按照关键字顺序排列的过程叫做排序。

 

【分类】     

       
       排序分为两种:

内部排序

待排序记录全部存放在内存中进行排序的过程

外部排序

待排序记录的数量很大,以至于内存不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程

 

      


【名词】


         在这里我们首先明确一下几个名词:时间复杂度、空间复杂度、稳定性

时间复杂度

       
       一个算法执行所耗费的时间。从理论上是不能算出来的,必须上机运行测试才能知道。一个算法花费的时间与算法中语句的执行次数成正比,语句执行次数多,花费的时间就多。一个算法中语句执行次数成为语句频度或时间频度。记做T(O)。

空间复杂度

       算法的空间复杂度是指运行完一个算法所需内存的大小。利用空间复杂度,可以对程序的运行时所需的内存有预先的估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。
     程序执行时所需存储空间包括以下两部分。

(1)固定部分。这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。
(2)可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。
一个算法所需的存储空间用f(n)表示。
S(n)=O(f(n))          其中n为问题的规模,S(n)表示空间复杂度。

稳定性

        排序算法的稳定性,通俗的讲就是能保证排序前两个相等的数,其在序列的前后位置顺序和排序后它们两个的前后位置相同。比如:如果Ai=Aj,Ai原来的位置在Aj的前边,那么排序完之后,Ai的位置还要在Aj的前边。

        排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,对基于比较的排序算法而言,元素交换的次数可能会少一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: