最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析java 希爾排序(Shell)算法

 更新時間:2015年02月02日 10:54:36   投稿:hebedich  
這篇文章主要介紹了淺析java 希爾排序(Shell)算法的原理以及示例,需要的朋友可以參考下

先取一個小于n的整數(shù)d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數(shù)的記錄放在同一個組中。先在各組內(nèi)進(jìn)行直接插入排序;然后,取第二個增量d2<d1重復(fù)上述的分組和排序,直至所取的增量dt=1(dt<dt-l<;…<d2<d1),即所有記錄放在同一組中進(jìn)行直接插入排序為止。
該方法實質(zhì)上是一種分組插入方法。

原理圖:

源代碼

復(fù)制代碼 代碼如下:

package com.zc.manythread;
/**
 *
 * @author 偶my耶
 *
 */
public class ShellSort {
    public static int count = 0;
    public static void shellSort(int[] data) {
        // 計算出最大的h值
        int h = 1;
        while (h <= data.length / 3) {
            h = h * 3 + 1;
        }
        while (h > 0) {
            for (int i = h; i < data.length; i += h) {
                if (data[i] < data[i - h]) {
                    int tmp = data[i];
                    int j = i - h;
                    while (j >= 0 && data[j] > tmp) {
                        data[j + h] = data[j];
                        j -= h;
                    }
                    data[j + h] = tmp;
                    print(data);
                }
            }
            // 計算出下一個h值
            h = (h - 1) / 3;
        }
    }
    public static void print(int[] data) {
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + "\t");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        int[] data = new int[] { 4, 3, 6, 2, 1, 9, 5, 8, 7 };
        print(data);
        shellSort(data);
        print(data);
    }
}

運行結(jié)果:

Shell排序是不穩(wěn)定的,它的空間開銷也是O(1),時間開銷估計在O(N3/2)~O(N7/6)之間

相關(guān)文章

  • SpringMVC框架如何與Junit整合看這個就夠了

    SpringMVC框架如何與Junit整合看這個就夠了

    這篇文章主要介紹了SpringMVC框架如何與Junit整合看這個就夠了,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • java字符串的重要使用方法以及實例

    java字符串的重要使用方法以及實例

    在本篇文章里小編給大家整理了關(guān)于java字符串的重要使用方法以及實例代碼,需要的朋友們可以跟著學(xué)習(xí)參考下。
    2019-03-03
  • SpringBoot整合Mybatis與druid實現(xiàn)流程詳解

    SpringBoot整合Mybatis與druid實現(xiàn)流程詳解

    這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的下伙伴可以參考一下
    2022-10-10
  • Java漢字轉(zhuǎn)成漢語拼音工具類

    Java漢字轉(zhuǎn)成漢語拼音工具類

    這篇文章主要為大家詳細(xì)介紹了Java漢字轉(zhuǎn)成漢語拼音工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Mybatis與Jpa的區(qū)別和性能對比總結(jié)

    Mybatis與Jpa的區(qū)別和性能對比總結(jié)

    mybatis和jpa兩個持久層框架,從底層到用法都不同,但是實現(xiàn)的功能是一樣的,所以說一直以來頗有爭議,所以下面這篇文章主要給大家介紹了關(guān)于Mybatis與Jpa的區(qū)別和性能對比的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • java中Websocket的使用方法例子

    java中Websocket的使用方法例子

    這篇文章主要給大家介紹了關(guān)于java中Websocket的使用方法,WebSocket是HTML5開始提供的一種在瀏覽器和服務(wù)器間進(jìn)行全雙工通信的協(xié)議,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • mybatis使用foreach語句實現(xiàn)IN查詢(三種)

    mybatis使用foreach語句實現(xiàn)IN查詢(三種)

    這篇文章主要介紹了mybatis使用foreach語句實現(xiàn)IN查詢(三種),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Linux centos7環(huán)境下jdk安裝教程

    Linux centos7環(huán)境下jdk安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下jdk的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Spring IOC基于注解啟動示例詳析

    Spring IOC基于注解啟動示例詳析

    這篇文章主要給大家介紹了Spring IOC基于注解啟動的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring復(fù)雜對象創(chuàng)建的方式小結(jié)

    Spring復(fù)雜對象創(chuàng)建的方式小結(jié)

    這篇文章主要介紹了Spring復(fù)雜對象創(chuàng)建的三種方式,現(xiàn)在使用Spring如何創(chuàng)建這種類型的對象?Spring中提供了三種方法來創(chuàng)建復(fù)雜對象,需要的朋友可以參考下
    2022-01-01

最新評論

普兰店市| 托里县| 西藏| 汉源县| 天等县| 奉新县| 德昌县| 湘乡市| 昌都县| 黎城县| 泗阳县| 桂东县| 息烽县| 湾仔区| 伊吾县| 裕民县| 淳化县| 塔城市| 昂仁县| 泗水县| 利川市| 三亚市| 江北区| 多伦县| 和硕县| 永善县| 平原县| 宝应县| 珲春市| 尚义县| 兖州市| 大厂| 马山县| 恩施市| 乐亭县| 江川县| 喀喇沁旗| 美姑县| 南靖县| 桃园市| 上栗县|