泛型希尔排序

简介: /** * 希尔排序 * * @param array * @param */ public static void sort(C[] array) { if (null == array || 1 >= array.
     /**
     * 希尔排序
     *
     * @param array
     * @param <C>
     */
    public static <C extends Comparable> void sort(C[] array) {
        if (null == array || 1 >= array.length) {
            return;
        }
        // 奇数补1,偶数不补
        int skip = array.length / 2 + (array.length % 2 == 1 ? 1 : 0);
        while (skip >= 1) {
            for (int i = 0; i + skip < array.length; i++) {
                cas(array, i, i + skip);
            }
            skip /= 2;
        }
    }


    /**
     * 比较/交换值
     *
     * @param array
     * @param a
     * @param b
     * @param <C>
     */
    @SuppressWarnings("unchecked")
    private static <C extends Comparable> void cas(C[] array, int a, int b) {
        if (array[a].compareTo(array[b]) > 0) {
            C t = array[a];
            array[a] = array[b];
            array[b] = t;
        }
    }
目录
相关文章
|
29天前
|
算法 C语言
C语言之冒泡排序、快速排序法、希尔排序法
C语言之冒泡排序、快速排序法、希尔排序法
|
4月前
|
搜索推荐 Java 索引
快速排序的新用法
快速排序的新用法
27 0
|
4月前
|
存储 算法 搜索推荐
排序方法8大总结
排序方法8大总结
|
5月前
|
算法
insertionSoft(插入排序) 2.1-1 And 重写insertionSoft 2.1-2
insertionSoft(插入排序) 2.1-1 And 重写insertionSoft 2.1-2
15 0
|
9月前
|
存储 Java
2.4 Lambda表达式在集合操作中的应用:使用Lambda表达式进行排序
2.4 Lambda表达式在集合操作中的应用:使用Lambda表达式进行排序
46 0
|
10月前
|
存储 搜索推荐 测试技术
数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)
数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)
238 0
|
11月前
|
算法 搜索推荐 Java
数组的四种排序方法介绍
数组的四种排序方法介绍
256 0
|
算法 搜索推荐 Java
Java实现希尔排序
Java实现希尔排序
136 0
Java实现希尔排序
|
Java
Java实现插入排序
Java实现插入排序
71 0
Java实现插入排序
泛型栈和队列
泛型栈和队列
88 0