排序算法的总结与感悟

数据结构:

排序算法总结:

内部排序:整个排序过程完全在内存中进行,成为内部排序;

外部排序:另一类排序时由于待排序的数据量太大,内存无法容纳全部数据,排序需要借助外部存储设备才能完成,成为外部排序

排序算法:

插入类排序:

1、直接插入排序

具体过程为:将第i个记录的关键字k,依次与其前面记录的关键字k(i-1),k(i-2),...,k(1)进行比较,将所有关键字大于k(i)的记录依次向后移动一个位置,直到遇见一个小于或者等于他的数此时k(i)后面必定为空位置,将第i个记录插入到空位置即可。

折半插入排序

对于有序表进行折半查找,其性能优于顺序查找。所以,可以将折半查找思想用于在有序记录r[1..i-1]中确定应插入位置,相应的排序算法称为折半插入排序法。

希尔排序

希尔排序算法思想香江待排序的记录序列分割成若干个“较稀疏”的子序列,分别进行直接插入排序。经过上述粗略调整,整个序列中的记录已经基本有序,最后再对全部记录进行一次直接插入排序。

2、交换类排序:

冒泡排序法:

冒泡排序算法的最坏情况是待排序记录按关键字逆序排列,此时,第i趟冒泡排序需进行n-i次比较,3(n-i)次移动。经过n-1趟排序后,总的比较次数为n(n-1)/2。

快速排序:

从待排序记录序列中选取一个记录(通常选取第一个记录)为枢纽,其关键字设为k,然后将其与关键字小于k1的记录一到前面

,而将关键字大于或者等于k1的记录移到后面,结果将待排序记录序列分成两个子表,最后将关键字为k1的记录插入分解线的位置处。整个过程叫做快速排序。

3、选择类排序

简单选择排序:

第一趟简单排序时,从第一个记录开始,通过n-1次关键字比较,从n个记录中选出关键字最小的记录,并且和第一个记录进行交换;

第二趟简单排序时,从第二个记录开始,通过n-2次关键字比较,从n-1个记录中选出关键字最小的记录,并且和第二个记录进行交换;

第三趟简单排序时,从第三个记录开始,通过n-3次关键字比较,从n-2个记录中选出关键字最小的记录,并且和第三个记录进行交换;

...


树形选择排序:

树形选择排序也称作锦标赛排序,基本思想就是先把待排序的n个记录的关键字两两进行比较,取出较小者,然后再在【n/2】个较小者中,采用同样的方法进行比较,选出每两个中的较小者,如此反复,直至选出最小关键字记录为止。

堆排序:

把待排序的记录的关键字存放在数组中r[1..n]之中,将r看成是一颗完全二叉树的顺序表示,每个节点表示一个记录,第一个记录r[1]作为二叉树的根,以下各记录r[2]~r[n]依次逐层从左到右顺序排列,任意节点r[i]的做孩子是r[2i],右孩子r[2i+1],双亲是r[i/2],对这颗完全二叉树进行调整堆栈。


排序算法可以分情况使用,如果数据量较小简单排序我们可以选择冒泡或者快速排序,对于数据量大的且为有序的可以选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值