当前位置: 代码迷 >> 综合 >> O(nlogn)的一般排序方法
  详细解决方案

O(nlogn)的一般排序方法

热度:79   发布时间:2024-01-09 10:26:40.0

前言

上次介绍了几种最简单常用的排序算法,但对于咱们现在这个时代来说,这些算法已经太慢了,几乎没有实用价值,所以这次说一些比较常用实用的更快的排序算法。
还有就是这些算法有的用到了分治的思想。建议去学习一下这种思想,非常有用。

种类

  1. 希尔排序
  2. 堆排序
  3. 归并排序
  4. 快速排序

希尔排序

关于希尔排序的主要是思想就是跳跃式交换,从而提高了排序的速度,而其跳跃式交换就依赖于其中的一个变量: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]&#
  相关解决方案