美文网首页
高效排序算法-梳排序

高效排序算法-梳排序

作者: async丶 | 来源:发表于2019-11-13 18:02 被阅读0次
梳排序

原理:
梳(comb)排序基于冒泡排序。每个梳都有自己的gap(间隙),或大或小。

目前我们已知的冒泡排序是相邻两个元素进行比较,也就是说他们的gap为1。然而梳排序提出了不同的观点,它将gap设置为一定的大小。

梳排序有这样一个1.3的比率值,每趟比较完后,都会用这个1.3去递减gap,直到gap=1时变成冒泡排序,这种算法比冒泡排序的效率要高效的多,时间复杂度为O(N2/2p) 这里的p为增量。

public static int[] combSort(int[] a) {
    int N = a.length;
    int step = N;
    int k;
    //将数组长度/1.3得到本次的gap;   当step=1时,相当于最后进行了一次冒泡排序
    while((step /= 1.3) >= 1) {
        for (int i = N-1; i >= step; i--) {
            k = i -step;
            //如果前者大于后者,则进行交换
            if(a[k]>a[i]){
                // 交换位置
                exc(a, k, i);
            }
        }
    }
    return a;
}
梳排序

在梳排序中,原作者用随机数做实验,得到了最有效的递减效率是1.3。也就是step/=1.3,同样也可以写成step *= 0.8,因为编程语言乘法比除法快。

相关文章

  • 高效排序算法-梳排序

    梳排序 原理:梳(comb)排序基于冒泡排序。每个梳都有自己的gap(间隙),或大或小。 目前我们已知的冒泡排序是...

  • 梳排序

    参考维基百科 梳排序是Wlodzimierz Dobosiewicz于1980年发明的不稳定排序算法。梳排序改良自...

  • 排序-希尔排序(分治)

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • swift经典算法-希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法④——希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • iOS常用算法

    一、排序算法 NSSortConcurrent 是高效的但不稳定的排序算法,例如:快速排序NSSortStable...

  • 希尔排序学习

    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基...

  • 算法与数据结构-希尔排序

    一、概念 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 常用的排序算法详解:希尔排序,桶排序,选择排序,冒泡排序,快速排

    排序算法——希尔排序 希尔排序是插入排序的一种,又称"缩小增量排序”,是插入排序算法的一种更高效的改进版本。 希尔...

  • 算法学习:希尔排序

    背景介绍:也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序...

网友评论

      本文标题:高效排序算法-梳排序

      本文链接:https://www.haomeiwen.com/subject/jjgvbctx.html