第一次上机的内容,实现插入排序、合并排序、快速排序、随机快排、计数排序、基数排序、桶排序
这里用C语言实现,主要是为了贴代码
基础设施建设
引一些头文件,写了个交换函数、打印数组用的函数
|
|
插入排序
这里传了一个比较函数,主要是为了之后的基数排序需要一个稳定的排序方式,方便之后调用。
算法就是将后面的数字往前插。
|
|
归并排序
将数组分成两部分,分别递归调用后再进行合并。
|
|
快速排序
选一个 privot
,让后将比 privot
大的放在右边, 比 privot
小的放在左边。
挑选挪动的思路是从左往右扫,把比 privot
小的挪到左边,扫完了以后将 privot
换到中间即可。
这样比从两边同时扫不容易错。
|
|
随机快排
思路跟上面是一样的,只是选 privot
的时候用随机的方法选。
|
|
计数排序
统计数据出现的次数,然后进行排序。
|
|
基数排序
每一位都进行排序,从低位开始。每一位的排序方式使用稳定的排序方式,这里用了插入。
|
|
桶排序
将数据范围分成几段,即桶,然后将数据放入桶中,然后用以上的各种方法对桶内数据排序,最后将桶的数据连接起来即可。
|
|
主函数
生成数据用
|
|