在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談希爾排序算法思想以及如何實現

Android編程精選 ? 來源:編程學習總站 ? 作者:寫代碼的牛頓 ? 2021-06-30 10:05 ? 次閱讀

01

希爾排序算法思想

希爾排序也是一種插入排序,是簡單插入排序改進后的一個更高效版本,同時也是首批突破O(n^2)算法之一。

希爾排序算法思想:希爾排序是按照下標增量進行分組,對每組使用插入排序算法進行排序,隨著增量減少,每組包含的關鍵字越來越多,增量減到1時,整個序列被分為一組,算法終止。

我們以增序排序為例,希爾排序基本步驟:選擇初始增量gap = length / 2,縮小增量繼續以gap = gap / 2的方式進行,直到增量gap = 1為止,增量的每次變化都會將原始序列劃分為若干組,分別對每一組進行插入排序。

每一次通過增量劃分組進行插入排序宏觀上小的數移到了前面,大的數移到了后面,最后增量gap = 1進行插入排序后就是最終的有序序列。本文會以圖解的方式詳細介紹希爾排序算法的整個工作過程。

02

希爾排序算法實現

希爾排序完整源碼如下:

//插入排序 void insert_sort(int *arr, int length, int start, int gap){ if(arr == NULL || length 《= 0 || start 《 0 || gap 《= 0){ return; } int i = 0, j = 0; int value = 0; for(i = start; i 《 length - gap; i += gap){ value = arr[i + gap]; for(j = i; j 》= start; j -= gap){ if(value 《 arr[j]){ arr[j + gap] = arr[j]; }else{ break; } } arr[j + gap] = value; } } //希爾排序 void shell_sort(int *arr, int length){ if(arr == NULL || length 《= 0){ return; } int gap = 0, start = 0; int count = 0; for(gap = length / 2; gap 》 0; gap /= 2){ start = 0; for(count = 0; count 《 length / gap; count++){ insert_sort(arr, length, start, gap); start++; } } }

現在寫一個小程序驗證算法的正確性,代碼如下:

#include 《stdio.h》 #include “shell_sort.h” int main() { int i = 0; printf(“希爾排序結果 ”); int arr[7] = {8, 23, 64, 12, 0, 5, 6}; shell_sort(arr, 7); for(i = 0; i 《 7; i++){ printf(“%d ”, arr[i]); } printf(“ ”); return 0; }

編譯運行輸出如下:

希爾排序結果 0 5 6 8 12 23 64

算法完全正確!

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源碼
    +關注

    關注

    8

    文章

    668

    瀏覽量

    30179
  • 編譯
    +關注

    關注

    0

    文章

    676

    瀏覽量

    33793

原文標題:數據結構與算法篇-希爾排序

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    低成本電源排序器解決方案

    絕大多數負載點DC-DC轉換器可以將上一個轉換器的電源就緒輸出連接至下一個轉換器的使能輸入,實現上電排序。這種方法只適合比較簡單的設計,不能滿足多數現代微處理器和DSP的要求一這類器件要求斷電順序必須與上電順序相反。許多廠商針對這類應用推出了可編程
    的頭像 發表于 05-21 09:55 ?428次閱讀
    低成本電源<b class='flag-5'>排序</b>器解決方案

    完整版—單片機編程思想(推薦下載!)

    單片機的編程思想,希望能幫助大家寫出簡明的代碼 內容簡介 以單片機裸環境為基礎,為編程者定義了一個微操作系統(MOS)的編程環境,并面向應用中不斷提高的需求對編程策略進行了深度剖析與研究,從而分離
    發表于 04-16 15:06

    PID控制算法的C語言實現:PID算法原理

    在工業應用中 PID 及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握 PID 算法的設計與實現過程,對于一般的研
    發表于 02-26 15:24

    DLPC7540EVM是否支持自定義的圖像處理算法以及如何進行算法的移植?

    是否支持自定義的圖像處理算法以及如何進行算法的移植?
    發表于 02-17 08:25

    詳解Linux sort命令之掌握排序技巧與實用案例

    在linux系統使用過程中,提供了sort排序命令,支持常用的排序功能。 常用參數 sort命令支持很多參數,常用參數如下: ? 短參數 長參數 說明 -n – number-sort 按字符串數值
    的頭像 發表于 01-09 10:10 ?833次閱讀

    TimSort:一個在標準函數庫中廣泛使用的排序算法

    成為其默認排序算法。它的影響不止于此,Java、Android、GNU Octave、Chrome 的 V8 引擎、Swift 以及
    的頭像 發表于 01-03 11:42 ?514次閱讀

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+內容簡介

    內容簡介這是一本深入解讀基礎算法及其電路設計,以打通算法研發到數字IC設計的實現屏障,以及指導芯片設計工程師從底層掌握復雜電路設計與優化方法為目標的專業技術書。任何芯片(如WiFi芯片
    發表于 11-21 17:14

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+介紹基礎硬件算法模塊

    作為嵌入式開發者往往比較關注硬件和軟件的協調。本書介紹了除法器,信號發生器,濾波器,分頻器等基本算法的電路實現,雖然都是基礎內容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現,過去的研發
    發表于 11-21 17:05

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+第九章sigma delta adc閱讀與分享

    思想幾行代碼實現降幀率算法。 https://mp.weixin.qq.com/s/9Vhe1rUCI8ZGBGGy3todcwPDM系列文章之二:一文搞懂PDM編碼基本原理1bit
    發表于 11-20 13:58

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+一本介紹基礎硬件算法模塊實現的好書

    ,少了再給多點”,本文微信公眾號”嵌入式Lee”中分享了一些列sigma delta思想相關的文章,比較使用sigma delta思想,幾行代碼就可以實現降幀率算法,感興趣可以關注公眾
    發表于 11-20 13:42

    時間復雜度為 O(n^2) 的排序算法

    作者:京東保險 王奕龍 對于小規模數據,我們可以選用時間復雜度為 O(n2) 的排序算法。因為時間復雜度并不代表實際代碼的執行時間,它省去了低階、系數和常數,僅代表的增長趨勢,所以在小規模數據情況下
    的頭像 發表于 10-19 16:31 ?1646次閱讀
    時間復雜度為 O(n^2) 的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    TPS54120排序和跟蹤

    電子發燒友網站提供《TPS54120排序和跟蹤.pdf》資料免費下載
    發表于 10-10 10:54 ?0次下載
    TPS54120<b class='flag-5'>排序</b>和跟蹤

    名單公布!【書籍評測活動NO.46】從算法到電路 | 數字芯片算法的電路實現

    :elecfans123)領取書籍進行評測,如在5個工作日內未聯系,視為放棄本次試用評測資格! 《從算法到電路——數字芯片算法的電路實現》 是一本深入解讀基礎算法及其電路設計,以打通
    發表于 10-09 13:43

    C加密算法實現

    電子發燒友網站提供《C加密算法實現.pdf》資料免費下載
    發表于 09-20 11:10 ?1次下載
    C加密<b class='flag-5'>算法</b>的<b class='flag-5'>實現</b>

    利用Matlab函數實現深度學習算法

    在Matlab中實現深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環境設置、數據準備、模型設計、訓練過程、以及測試和評估,并提供一個基于Mat
    的頭像 發表于 07-14 14:21 ?3479次閱讀
    主站蜘蛛池模板: 特黄特黄特色大片免费观看 | 国产欧美日韩在线人成aaaa | 关晓彤被调教出奶水的视频 | 免费人成网址在线观看国内 | 午夜影院啊啊啊 | 最新版天堂资源中文官网 | 速度与激情10 | 国产三a级日本三级日产三级 | 欧美尺寸又黑又粗又长 | 都市激情综合网 | 草草操| 国产精品资源在线观看 | 综综综综合网 | 免费精品99久久国产综合精品 | 国产精品资源在线观看网站 | 91啪免费网站在线观看 | 美女视频黄a视频美女大全 美女视频一区二区 | 天天天狠天天透天天制色 | 一区二区三区网站在线免费线观看 | 欧美色插| 久久久午夜毛片免费 | 七月色婷婷 | 天天躁日日躁狠狠躁中文字幕老牛 | 特黄特色大片免费播放器9 特黄特色大片免费视频播放 | 亚洲视频你懂的 | 色视频网 | 天天干天天拍天天操 | 中文字幕一区二区三区乱码aⅴ | 欧美精品1| 拍拍拍无挡视频免费全程1000 | 拍拍拍成人免费高清视频 | 色秀视频免费网站在线观看 | 一级毛片在线免费视频 | 69日本xxxxxxxxx18| 视色4setv.com| 亚1洲二区三区四区免费 | 亚洲最大的黄色网址 | 日本乱理论片免费看 | 亚洲国产精品国产自在在线 | 老师叫我下面含着精子去上课 | 欧美性猛交xxxx免费看久久 |