首页 > 学院 > 开发设计 > 正文

排序相关

2019-11-06 07:59:53
字体:
来源:转载
供稿:网友

有哪些存储结构

随机存取,既可以随意直接存储任何一个元素,可以通过下表直接存取任何一个元素入数组等。顺序存储,就是只能从前往后逐个访问,像这种链表结构,不能直接通过下标访问,就必须从头开始访问,向后逐个搜索。索引存取是指为某个关键字建立索引表,从所有的表中得到地址,在直接访问。索引存储多用在数据管理过程中。散列存储时建立散列表,它相当于一种索引。

排序的稳定性

当待排序的关键字均不相同时,排序结果时唯一的,否则排序结果不唯一。若具有相同关键字的稳定性时针对所有输入的实例而言的,即在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该算法就是不稳定的。 稳定的排序入下表所示。

稳定的排序 时间复杂度 空间复杂度
气泡排序 最差/平均都是O(n^2),最好时O(n) 1
鸡尾酒排序 最差/平均都是O(n^2),最好时O(n) 1
插入排序 最差/平均都是O(n^2),最好时O(n) 1
归并排序 最差/平均/最好都是O(nlogn) O(n)
桶排序 O(n) O(k)
基数排序 O(dn) O(n)
二叉树排序 O(n log n) O(n)
图书排序 O(n log n) (1+kc)n

不稳定的排序如下表所示:

不稳定的排序 时间复杂度 空间复杂度
选择排序 最差平均都是O(n^2) 1
希尔排序 O(n log n) 1
堆排序 最差/平均/最好都是O(n log n) 1
快速排序 平均时O(n log n),最坏是O(n^2) O(log n)

排序方法的分类

(1)按是否设计数据的内、外存交换分 在排序过程中,若整个文件都放在内存中处理,排序时不涉及数据的内、外存交换,称之内部排序;反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序。 注意:

内排序适用于记录个数不是很多的小文件;外排序则适用于记录个数太多,不能一次将其全部记录放入内存的大文件;

(2)按照策略划分内部排序方法。 可以分为五类:插入排序、选择排序、交换排序、归并排序和分配排序。

按照平均时间排序分为四类

(1)平方阶:直接插入排序、直接选择排序和冒泡排序。 (2)线性对数阶:快速、堆和归并排序。 (3)O(n^1+kc):希尔排序 (4)线性阶排序:桶排序、箱排序和基数排序。

简单排序中直接插入最好,快读排序最快,当文件为正序时,直接插入排序和冒泡排序均最佳。

快速排序时目前基于比较的内部排序中被认为时最好的犯法噶,宕待排序的关键字时随机分布时,快速排序的平均时间最短。

堆排序所需要的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。

hash记录表和位置表的对应方法

直接定址法数字分析法平方取中法折叠法取余法随机数法


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表