排序算法初识

什么是排序

从字面上理解,排序的过程就是把无序变成有序的过程。从应用来说,可以分三个层次理解:

①整数排序,这是所有程序员刚接触排序算法时的直观感受,输入一些随机整数,然后将其排序后输出出来。

②关键字排序,用过Excel排序的人对此应该不陌生,我们可以根据不同的关键字对数据记录进行排序,还可以有排序主字段和二级字段等概念。

③按要求排序,这是广义上的排序方法,举个例子,我们在玩儿某些扑克牌游戏时,三张4是大于两张5的,这个时候要求我们按照元素个数排序,即多的放前面。

排序中的基本操作

排序中用到的最多的操作肯定是比较大小,还有就是交换两个原始的位置。这些基本操作经常被用来分析排序算法的时间复杂度。

排序算法的分类

按照不同的分类标准,排序算法有不同的分类

①是否稳定,即如果排序关键字的值相同,排序前后这两条记录的相对位置是否会发生改变。这一性质在多关键字排序中非常重要,如果排序算法不稳定,那就无法应用到多关键字排序中。

②涉及的存储器类型,一般排序算法都是在内存中进行的,即所有待排序记录已经读到内存中了,这样的排序算法称为内部排序。接下来的分类标准全部是在内部排序前提下进行的。但是,数据量非常大时,内存无法一次存储所有数据,我们要分批读入外存中的数据然后排序,这样的排序方法称为外部排序。

③依据原则,根据排序算法依据的原则,可以将排序分为插入排序、交换排序、选择排序、归并排序和计数排序几种类型。

④时间复杂度,按照排序算法的时间复杂度可以将其分为简单排序(O(n^2)),先进排序(O(nlogn)),基数排序(O(d*n))。

⑤代排序记录的数据结构,一般排序记录的数据结构有三种:第一种是简单的顺序存储,记录本身放在一个数组中。要排序就必须交换数组元素的位置。第二种是静态链表,记录间靠指针连接,排序的过程不需要改变链表结点位置,只需要改变指针指向即可。第三种是指针数组,记录本身随意存储,而将其地址存放于一个数组中,通过对指针数组排序,间接得到记录的有序集合。

最后说明:没有最好排序算法只有合适的排序思想

排序算法多种多样,没有哪一种算法可以完美解决所有问题。之所以有这么多的分类标准,就是要求我们根据实际问题来选择最合适的算法。另一方面,学习排序算法并不仅仅是为了排序,网络中和书上有所有算法的现成代码,我们要掌握的是排序算法解决问题的思路,而不是去背这些代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值