前言
上次介绍了几种最简单常用的排序算法,但对于咱们现在这个时代来说,这些算法已经太慢了,几乎没有实用价值,所以这次说一些比较常用实用的更快的排序算法。
还有就是这些算法有的用到了分治的思想。建议去学习一下这种思想,非常有用。
种类
- 希尔排序
- 堆排序
- 归并排序
- 快速排序
希尔排序
关于希尔排序的主要是思想就是跳跃式交换,从而提高了排序的速度,而其跳跃式交换就依赖于其中的一个变量:inc。
我个人认为这是一个非常巧的排序,以至于我不知道这个方法为什么可行(逃···
反正··就是利用这个方法就可以高效的完成排序。
void ShellSort(int *a,int len)
{int inc=len;while(inc>1){inc=inc/3+1;//关于这个运算,有很多种其他的算法方法,不止这一种for(int i=inc+1;i<=len;++i){if(a[i]<a[i-inc]){a[0]=a[i];int j;for(j=i-inc;j>0&&a[0]<a[j];j-=inc)//跳跃式交换a[j+inc]=a[j];a[j+inc]&#