泛型希尔排序

简介: /** * 希尔排序 * * @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;
        }
    }
目录
相关文章
|
3月前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
42 0
|
7月前
|
存储 算法 搜索推荐
【数据结构】归并排序的非递归写法和计数排序
【数据结构】归并排序的非递归写法和计数排序
|
8月前
|
搜索推荐 算法 C语言
【排序算法】C语言实现选择排序与冒泡排序
【排序算法】C语言实现选择排序与冒泡排序
112 0
|
8月前
|
算法 C语言
C语言之冒泡排序、快速排序法、希尔排序法
C语言之冒泡排序、快速排序法、希尔排序法
|
8月前
|
算法 搜索推荐 C语言
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)
|
8月前
|
算法 搜索推荐 Java
数据结构与算法__冒泡排序__Java外比较器和内比较器(排序专题)
数据结构与算法__冒泡排序__Java外比较器和内比较器(排序专题)
64 0
|
搜索推荐 C语言
排序算法——基数排序(C语言)
排序算法——基数排序(C语言)
|
存储 搜索推荐 测试技术
数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)
数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)
287 0
|
C语言
C语言实现数组的排序——冒泡排序
C语言实现数组的排序——冒泡排序
139 0
|
搜索推荐 C语言
c语言-数组排序算法-冒泡法排序
冒泡法顺序指的是在排序时,从前往后扫描待排序记录,每次比较数组中相邻的两个数组元素的值,将较小的数(按从小到大排列)排在较大的数前面。
c语言-数组排序算法-冒泡法排序

热门文章

最新文章