日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

希尔排序增量研究

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 希尔排序增量研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 上一篇介紹了希爾排序,它又被稱為縮小增量排序,這就說明了增量在希爾排序中的重要性。

? ? ? ? 本篇使用四組不同的增量,通過統計排序的比較次數、移動次數、執行時間,來討論不同的增量對希爾排序效率的影響。

? ? ? ? 選取的增量:h1=N/2, N/4, N/8,……,1(每次增量減半)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?h2=N/3, N/9, N/27,……,1(每次增量為原來的三分之一)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?h3=2?-1 (h=1,3,7,……)(增量為奇數)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?h4=(3?-1)/2 (h=1,4,13,……)

? ? ? ? 1、保持序列元素個數不變

? ? ? ? 保持序列元素個數為1000000,每次隨機生成不同的序列,對四個增量分別做4組排序。

增量h比較次數移動次數執行時間(ms)平均時間(ms)
h17089931753401514390409
7124864653751082437
6312521645628028406
6570920048211399406
h25890853847827463328367
5727156646192005360
5874505047664214422
5815811847077871359
h36333783545942623391434
6226148444866301422
6450740047112762485
6593213948537533438
h46760093856206667359398
6242837451034112390
6786768556472626453
6379458952400141391

? ? ? ??從測試的結果來看,當序列元素個數相同時,對四種增量分別用生成的四組隨機數排序時,它們的比較次數、移動次數以及執行時間等參數差別不大。因此可以認為對于待排序列的元素個數相同的情況下,基于以上四種增量的序列,希爾排序算法的時間復雜度差異不是很明顯,執行效率差別不大。

? ? ? ? 2、序列的元素個數改變

? ? ? ? 使序列元素個數增加,分別取10000、100000、1000000、10000000,每次隨機生成不同的序列,對四個增量分別排序。

元素個數增量h比較次數移動次數執行時間(ms)
10000h12663011513880
h22421501713890
h323788112934615
h42386861678160
100000h14270009282047632
h24174584326707615
h33959590254303732
h43867292294153431
1000000h16689087849393622422
h25919087748110274360
h35987290642478486406
h46280542251410564375
10000000h110352502298202610495301
h2116756015410368128895532
h39801271577721501775294
h496596049558545085985378

? ? ? ? 從測試結果可以看出,不同長度的序列使用四個增量分別進行排序時,比較次數、移動次數、排序時長有一定差異。當元素個數較少時,增量為h2=N/3, N/9, N/27,……,1的希爾排序效率比其他增量略高;

當元素個數較多時,增量為h4=(3?-1)/2 (h=1,4,13,……)的希爾排序效率比其他增量略高。

? ? ? ? 綜上所述,希爾排序算法在不同增量下的執行效率也不盡相同,增量是影響希爾排序效率的重要因素。遺憾的是,雖然有很多論文專門研究過不同的增量對希爾排序的影響,但都無法證明某個增量是最好的。因此在使用希爾排序時,根據排序序列的大小,選取適當的增量對提高排序效率很有幫助。

? ? ? ??參考代碼:以Java為例。

import java.util.Random;/** 希爾排序*/public class ShellSort {//增量h=N/2static long comp1 = 0; //比較次數static long exch1 = 0; //交換次數public static void sort1(int[] a) {int n = a.length; //序列長度int h = n/2; //初始增量h為序列長度的一半while (h >= 1) {for (int i = h; i < n; i++) {for (int j = i; j >= h; j -= h) {comp1++;if(a[j]<a[j-h]){int swap = a[j];a[j] = a[j-h];a[j-h] = swap;exch1++;}else{break;}}}h /= 2; //增量減半 }}//增量h=N/3static long comp2 = 0; //比較次數static long exch2 = 0; //交換次數public static void sort2(int[] a) {int n = a.length; //序列長度int h = n/3; //初始增量h為序列長度的三分之一while (h >= 1) {for (int i = h; i < n; i++) {for (int j = i; j >= h; j -= h) {comp2++;if(a[j]<a[j-h]){int swap = a[j];a[j] = a[j-h];a[j-h] = swap;exch2++;}else{break;}}}h /= 3; //增量減為三分之一 }}//增量h=2?-1 (h=1,3,7……)static long comp3 = 0; //比較次數static long exch3 = 0; //交換次數public static void sort3(int[] a) {int n = a.length; //序列長度int h = 1;while (h < n/2) h = 2*h + 1;while (h >= 1) {for (int i = h; i < n; i++) {for (int j = i; j >= h; j -= h) {comp3++;if(a[j]<a[j-h]){int swap = a[j];a[j] = a[j-h];a[j-h] = swap;exch3++;}else{break;}}}h /= 2;}}//增量h=(3?-1)/2 (h=1,4,13……)static long comp4 = 0; //比較次數static long exch4 = 0; //交換次數public static void sort4(int[] a) {int n = a.length; //序列長度int h = 1;while (h < n/3) h = 3*h + 1;while (h >= 1) {for (int i = h; i < n; i++) {for (int j = i; j >= h; j -= h) {comp4++;if(a[j]<a[j-h]){int swap = a[j];a[j] = a[j-h];a[j-h] = swap;exch4++;}else{break;}}}h /= 3;}}public static void main(String[] args) {Random random = new Random();int[] arg = new int[10000];for(int n=0;n<10000;n++){ //從[0-10000]中生成10000個隨機數arg[n] = random.nextInt(10000);}int[] arg1 = new int[arg.length];int[] arg2 = new int[arg.length];int[] arg3 = new int[arg.length];int[] arg4 = new int[arg.length];for(int n=0;n<arg.length;n++){ //將隨機生成的數組復制到4個數組中arg1[n] = arg[n];arg2[n] = arg[n];arg3[n] = arg[n];arg4[n] = arg[n];}//分別對4個元素相等的數組用4個不同增量排序long startTime1 = System.currentTimeMillis(); //獲取開始時間 sort1(arg1);long endTime1 = System.currentTimeMillis(); //獲取結束時間long startTime2 = System.currentTimeMillis(); //獲取開始時間 sort2(arg2);long endTime2 = System.currentTimeMillis(); //獲取結束時間long startTime3 = System.currentTimeMillis(); //獲取開始時間 sort3(arg3);long endTime3 = System.currentTimeMillis(); //獲取結束時間long startTime4 = System.currentTimeMillis(); //獲取開始時間 sort4(arg4);long endTime4 = System.currentTimeMillis(); //獲取結束時間System.out.println("數組長度:"+arg.length);System.out.println("增量h=N/2的比較次數: "+comp1+" 交換次數:"+exch1+" 排序時長:"+(endTime1-startTime1)+"ms");System.out.println("增量h=N/3的比較次數: "+comp2+" 交換次數:"+exch2+" 排序時長:"+(endTime2-startTime2)+"ms");System.out.println("增量h=2?-1的比較次數: "+comp3+" 交換次數:"+exch3+" 排序時長:"+(endTime3-startTime3)+"ms");System.out.println("增量h=(3?-1)/2的比較次數:"+comp4+" 交換次數:"+exch4+" 排序時長:"+(endTime4-startTime4)+"ms");} }

? ? ? ? ?執行結果:

數組長度:10000 增量h=N/2的比較次數: 265465 交換次數:150579 排序時長:0ms 增量h=N/3的比較次數: 230360 交換次數:159712 排序時長:0ms 增量h=2?-1的比較次數: 238035 交換次數:129679 排序時長:15ms 增量h=(3?-1)/2的比較次數:227429 交換次數:156614 排序時長:0ms

?

? ? ? ? ?轉載請注明出處?http://www.cnblogs.com/Y-oung/p/7805984.html

? ? ? ??工作、學習、交流或有任何疑問,請聯系郵箱:yy1340128046@163.com

轉載于:https://www.cnblogs.com/Y-oung/p/7805984.html

總結

以上是生活随笔為你收集整理的希尔排序增量研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩中文字幕一区二区三区 | 97在线观看免费视频 | 骚虎视频最新网址 | 久久偷看各类wc女厕嘘嘘偷窃 | 亚洲色图另类小说 | a在线一区| 日韩有码在线播放 | 久久影院视频 | 黄色av免费观看 | 97色爱| 亚洲av综合av一区二区三区 | 秘密基地动漫在线观看免费 | 久久精品99国产 | 天天爽夜夜爽一区二区三区 | 久久性感美女视频 | 在线免费国产视频 | 丝袜视频在线 | 精品久久毛片 | 91影院在线免费观看 | 综合久久久久综合 | 国产人妻人伦精品1国产 | 国产成人久久精品流白浆 | 天天操天天干天天摸 | 国产手机视频在线 | 亚洲精品久久久久久久久 | 在线播放无码后入内射少妇 | 日本不卡一区二区三区在线观看 | 天天色天天草 | 狠狠的干狠狠的操 | 免费成人深夜 | 在线免费观看黄色 | 男朋友是消防员第一季 | 中文不卡av| 另类av在线 | 操比视频网站 | 亚洲午夜不卡 | 国产乱国产乱 | 黑人借宿巨大中文字幕 | 久久综合五月婷婷 | 日韩中文字幕视频在线观看 | 波多野结衣网站 | 久久久久久久国产 | 天天操欧美 | 一二三区在线播放 | 黄色免费av | 最新最全av网站 | 美女又爽又黄又免费 | 国产成年妇视频 | 日韩毛片 | 二级毛片 | 99视频在线免费观看 | 中文字幕欲求不满 | 蜜臀久久99精品久久久 | 欧美国产精品 | 一区二区三区久久久 | 色视频导航 | 成人在线视频一区 | 1区2区3区在线观看 久久久久久久久久久影院 成人网址在线观看 | 亚洲国产精品麻豆 | 福利视频免费观看 | 美女av一区二区 | 一二三区免费视频 | 狠狠操网| 国产在线青青草 | 麻豆视频污 | 久久理论| jizz18欧美18 | 黄色xxxxxx | 在线一区二区视频 | 国产亚洲小视频 | 中日韩免费毛片 | 亚洲一级二级三级 | 欧洲美熟女乱又伦 | 日韩一区二区三区四区在线 | 亚洲熟女乱综合一区二区 | 性欧美video另类hd尤物 | 日韩不卡av在线 | 国产一卡二卡三卡 | 成年人黄色网址 | 五月天综合激情 | 懂色av一区二区三区 | 涩涩屋视频| 大学生一级片 | 99免费国产| 亚洲av成人一区二区 | 久久天堂网 | 六月天综合网 | 日韩高清久久 | 色播激情 | 黄色一级视频网站 | 捆绑无遮挡打光屁股调教女仆 | www日本高清 | 一区黄色| 99久久99久久精品国产片桃花 | 黄色链接视频 | 亚洲福利一区二区 | 天天色图片 | 成人性视频在线 | 亚洲人成电影在线播放 |