关闭

Sorting Algorithm-PreKnowledge

标签: 排序算法数据结构
244人阅读 评论(0) 收藏 举报
分类:

作为《大话数据结构》的笔记


一、什么是排序

假设含有n个记录的序列{R1,R2,...,Rn},其相应的关键字分别为{k1,k2,...,kn},需确定1,2,...,n的一种排列p1,p2,...,pn,使其相应的关键字满足kp1<=kp2<...<=kpn非递减(或非递增)关系,即使得序列成为一个按关键字有序的序列{Rp1,Rp2,...,Rpn},这样的操作就称为排序。

Ex:ABCD的成绩如下

A       75

B       98

C       63

D       87

按成绩从大到小排序     结果为BDAC


二、排序的稳定性

假设ki=kj(1<=i<=n,1<=j<=n,i!=j),且在排序前的序列中Ri领先于Rj(即i<j)。如果排序后Ri仍领先于Rj,则称所用的排序方法是稳定的;反之,若可能使得排序后的序列中Rj领先Ri,则称所用的排序方法不稳定。

Ex:ABCD的原排列如下

A      75

B      75

C      87

D      96

稳定的排序结果          DCAB(AB的相对位置没有变)

不稳定的排序结果      DCBA(AB的相对位置变了)


三、内排序与外排序

根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序

内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。

外排序是由于排序记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。


四、内排序的算法性能(这里介绍的算法都是内排序)

1、时间复杂度

在内排序中,主要进行两种操作:比较和移动。比较指关键字之间的比较,这是要做排序最起码的操作。移动指记录从一个位置移动到另一个位置。高效率的内排序算法应该是具有尽可能少的关键字比较次数和 尽可能少的记录移动次数。

2、空间复杂度

除了存放待排序所所占用的存储空间之外,执行算法所需要的其他存储空间。


五、分类

按照算法的复杂度分为两大类

简单算法:冒泡排序、简单选择排序、直接插入排序

改进算法:希尔排序、堆排序、归并排序、快速排序


我们学习这些排序算法的目的更多并不是为了去在现实中编程排序算法,而是通过学习来提高我们编程算法的能力,以便于去解决更多复杂和灵活的应用性问题。




0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:162603次
    • 积分:5222
    • 等级:
    • 排名:第5242名
    • 原创:371篇
    • 转载:12篇
    • 译文:0篇
    • 评论:28条
    With Me
    博客专栏
    最新评论