数据结构之排序算法整理(1)

来源:互联网 发布:大数据修炼系统醉寒123 编辑:程序博客网 时间:2024/05/16 09:53

排序问题是各大IT公司必考的题目。

1.排序的对象--文件

被排序的对象--文件由一组记录组成。

记录则由若干个数据项(或域)组成。其中有一项可用来标识一个记录,称为关键字项。该数据项的值称为关键字

(Key)。

2.排序运算的依据--关键字

用来做排序运算依据的关键字,可以是数字类型,也可以是字符类型。

关键字的选取应依据问题的要求而定。

3.排序的稳定性

当待排序记录的关键字均不相同时,排序结果是唯一的,否则排序结果不唯一。

所谓稳定性是考量在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的

相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是

不稳定的。排序算法的稳定性是针对所有输入实例而言的。即在所有可能的输入实例中,只要有一个实例使得算法不

满足稳定性要求,则该排序算法就是不稳定的。(说得有点啰嗦)


4.排序的分类

  a.按是否涉及数据的内、外存交换分

     在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据内、外存交换,则称为内部排序(简称内排序

)。反之,为外部排序。

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

的大文件。

b.按是否为就地(原地)排序

如排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间时1,则称为就地排序(In-PlaceSort)

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

5.排序算法的基本操作

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

  比较两个关键字的大小;

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

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

模,还取决于输入实例中数据的状态(影响算法的时间复杂度)。

6.待排文件的常用存储方式

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

排序过程:对记录本身进行物理重拍,即通过关键字的比较判定,将记录移到合适的位置。

b.以链表作为存储结构

排序过程:无须移动记录,仅需修改指针。通常将这类排序称为链式排序

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

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

实现,且仍需避免排序过程中移动记录的排序方法。

上面的介绍应该是比较容易理解的。其实,常见的面试题目一般都是对数组中的数字进行排序,对于处理海量数据,

常用堆排序、哈希表。



下面先从整体上总结一下各种排序的时间复杂度、空间复杂度以及稳定性。后面会提供各种常用排序算法思想的讲解

Java实现的源代码。


稳定的排序                                                时间复杂度                                                     空间复杂度

冒泡排序                                                最差、平均O(n2),最好n                                           1

鸡尾酒排序(双向的冒泡排序)            最差、平均O(n2),最好n                                           1

插入排序                                                最差、平均O(n2),最好n                                           1

归并排序                                                最差、平均、最好都是nlogn                                       n

桶排序(不常用)                                               n                                                                     k

基数排序(Radix Sort,不常用)                          dn(d为常数)                                                 n

二叉树排序                                                      nlogn                                                                  n

图书馆排序                                                       nlogn                                                           (1+k)n


不稳定的排序有

选择排序                                                     最差、平均都是n2                                                    1

希尔排序                                                              nlogn                                                                1

堆排序                                                          最差、平均、最好都是nlogn                                    1

快速排序                                                       平均nlogn,最坏n2                                                 logn(递归产生的栈)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 耳机胶套脱落掉入耳朵怎么办 苹果笔记本电用完了开机了怎么办 华为荣耀5x锁屏密码忘了怎么办 华为荣耀锁屏密码忘了怎么办 华为手机屏锁密码忘了怎么办 华为荣耀9青春版相机很模糊怎么办 华为荣耀7手机照相忽然模糊怎么办 苹果5s进水开不了机怎么办 红米4a玩王者荣耀卡怎么办 老是显示媒体存储以停止运行怎么办 支付宝邮二维码地址留错了怎么办 华为畅享5s太卡怎么办 金立手机导航gps信号弱怎么办 贴了膜后边缘有气泡怎么办 魅族mx5刷机失败然后黑屏怎么办 魅族手机无线网玩王者卡怎么办 魅族手机玩王者荣耀卡怎么办 魅族手机导航gps信号弱怎么办 魅族手机4g信号差怎么办 魅族手机下面一排键失灵怎么办 魅族手机冲不进去电怎么办 苹果账号付款了又让付款怎么办 魅蓝3s开机定屏怎么办 魅族手机未找到固件怎么办不用电脑 魅族手机触屏局部失灵怎么办 更新了魅蓝的新系统掉帧怎么办 手机后盖摔了一下凹了一个洞怎么办 魅族手机充电需要重启怎么办 网上预约好了但就诊卡丢了怎么办 如果魅族手机锁屏密码忘记了怎么办 魅族手机应用加密忘记密码了怎么办 小米电视盒子3s死机黑屏怎么办 小米note充电充不进去电怎么办 乐视手机otg功能用不了怎么办 小米4c手机玩王者荣耀卡怎么办 捡的小米6被锁了怎么办 小米5s手机玩穿越火线卡怎么办 苹果平板更新完系统登录不上怎么办 谷歌商店一直卡在核对信息怎么办 贴吧邮箱忘了无法登陆怎么办 华为手机绑定了账号忘了怎么办