排序算法汇总


排序算法 平均 最好 最坏 是否稳定
选择排序 - - - -
冒泡排序 - - - -
插入排序 - - - -
梳排序 - - - -
希尔排序 - - - -
快速排序 - - - -
归并排序 - - - -
堆排序 - - - -
计数排序 - - - -
桶排序 - - - -
二叉树排序 - - - -

排序算法

选择排序

冒泡排序


插入排序

梳排序

/**
 * 梳排序
 * @param a
 * @return
 */
public static int[] combSort(int[] a) {
    int N = a.length;
    int step = N;
    int k;
    // 第一部分
    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);
            }
        }
    }
    // 第二部分:进行冒泡排序
    a= bubbleSort2(a);
    return a;
}

希尔排序

/**
 * shell排序
 * @param a
 * @return
 */
public static int[] shellSort(int[] a){
    int N = a.length;
    int h = 1;
    // 增量序列
    while(h < N/3){
        // h = 1,4,13,40,……
        h = h*3 + 1; 
    }

    while(h>=1){
        for (int i = h; i < N; i++) {
            // 进行插入排序,诺a[j]比a[j-h]小,则向前挪动h
            for (int j = i; j >= h && a[j-h]>a[j]; j -= h) {
                exc(a, j, j-h);
            }
        }
        h /= 3;
    }
    return a;
}

参考 https://www.cnblogs.com/xiaohuiduan/p/11188304.html


文章作者: Gumihoy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gumihoy !
评论
 上一篇
Redis开发规范 Redis开发规范
阿里云Redis开发规范一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video:1
2018-12-06
下一篇 
Redis设计与实现 Redis设计与实现
数据结构Redis键值对都是对象(object)组成,理解对象所使用的数据结构,你更加好理解和使用Redis 下面剖析对象所使用的数据结构:简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表 6种数据结构
2018-12-06
  目录