内部排序算法中的插入与快排及其优化算法(个人理解不含代码)

本文探讨了内部排序算法,重点关注插入排序的基本原理和优化方法,以及快速排序的简单实现。插入排序通过从后往前对比并移动元素来找到合适的位置;优化主要减少移动次数。快速排序则采用冒泡法进行比较和交换,逐步达到排序目的。
摘要由CSDN通过智能技术生成

内部排序算法


  1. 插入排序

    基础插入排序指的是对于一个有序表,依次将待插入的值插入在有序表的合适位置,从而使得有序。在程序实现中可以先将表第一个值单独当成一个有序表,然后从第二个值开始往后循环,从后往前对比,直到找到合适位置插入,然后将目标位置原值及之后的值全部往后移动。这种排序方式的主要开销用于对比与后移操作。


1.1 插入排序优化

1. 折半插入排序:由于直接插入排序的开销用于对比与后移操作,针对于查找操作,可以采用折半对比的方法,减少对比次数。这种方式被称为折半插入排序。

2. 2-路插入排序:2路插入排序是对折半插入排序的再改进。这个优化主要针对于简化插入排序的移动操作。具体实现通俗来说就是初始将前两个值按大小分别当成最大的与最小的,然后放在表两端,如果比最大的还大就直接放在最大的后面,如果比最小的还小就直接放在最小的前面,这样就可以减少移动的次数。其他的操作跟普通插入排序一样,可以一定程度优化算法。

3. 希尔排序:希尔排序,又称缩小增量排序,也是一种插入排序,不同的是希尔排序是按照一定增量对比交换,然后缩小增量直到增量为1(这时进行普通插入排序操作)。我感觉希尔排序更像是插入排序和交换排序的结合。通过采用希尔排序可以不存在大量数据后移或者前移操作,而是通过一定区间数据的移动使得表逐渐有序。例如:
对于 10 个元素的数据,使其有序,可以先设增量为 5 ,使 1 6, 2 7 , 3 8, 4 9, 5 10进行插入排序,然后设增量为 3, 使 1 4 7 10, 2 5 8,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值