1.插入排序(从小到大)
先排第一个元素,显然,它是有序的;
再排前两个,我们通过比第一个和第二个元素即可确定其顺序。
再排前三个,因为前两个已经有序,让第三个依次向前比,直到遇见第一个比它小的。
依次类推即可。以下是代码。

2.快速排序(从小到大)
整体思想:选取一个基准数,再以其为分界把大于它的放右边,小于等于他的放左边。再对这俩部分继续分而治之。
如何用基准数分为两部分?
不妨以最左边的为基准数

下面是代码:

3.归并排序(分治思想)
如何分解:用二分把问题分为若干规模类似的子问题
如何合并:对两个子序列并排序再合并
那如何使两个有序数组合并成一个有序数组c?
c[0]是两个数组中首元素更小的一个,于是取两个数组中首元素更小的一个作为c[0],并使那个数组去掉首元素。
那c[1]呢?即除去c[0]剩下的min,因此方法同c[0]
下面是代码

4.希尔排序(插入排序的改进)
首先,插入排序是对几乎排好序的数据操作,效率高,但是它数据移动只能1位。
因此,可以把序列进行分组,再对每一组进行插排。
这样,排序的过程即是消去逆序对的过程。插排每次可以去除1个逆序对,而采用希尔排序一次可消除大于等于1的逆序对。
如何分组?我们采用希尔原始步长序列:n/2,n/4,.....,1;(目前最好的是塞奇威克序列)
下面是代码:

本文详细介绍了四种常见的排序算法:插入排序、快速排序、归并排序以及希尔排序,强调了它们的核心思想、步骤和改进点,如快速排序的分界基准和归并排序的合并策略。
1160

被折叠的 条评论
为什么被折叠?



