色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內(nèi)不再提示

淺談希爾排序算法思想以及如何實現(xiàn)

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

01

希爾排序算法思想

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

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

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

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

02

希爾排序算法實現(xiàn)

希爾排序完整源碼如下:

//插入排序 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++; } } }

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

#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

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

    關注

    8

    文章

    639

    瀏覽量

    29185
  • 編譯
    +關注

    關注

    0

    文章

    657

    瀏覽量

    32852

原文標題:數(shù)據(jù)結構與算法篇-希爾排序

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

收藏 人收藏

    評論

    相關推薦

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+內(nèi)容簡介

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

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

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

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

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

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

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

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

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

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

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

    C加密算法實現(xiàn)

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

    手把手教你排序算法怎么寫

    今天以直接插入排序算法,給大家分享一下排序算法實現(xiàn)思路,主要包含以下部分內(nèi)容:插入排序介紹插入
    的頭像 發(fā)表于 06-04 08:03 ?683次閱讀
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么寫

    信號分析的基本思想是什么

    信號分析是一種研究信號特性、提取有用信息的方法。它在通信、電子、控制、生物醫(yī)學等領域具有廣泛的應用。本文將詳細介紹信號分析的基本思想、方法和應用。 一、信號分析的基本思想 信號分析的基本思想是通過
    的頭像 發(fā)表于 06-03 10:28 ?742次閱讀

    FPGA能實現(xiàn)什么樣的算法?

    FPGA功能如此強大,請問用FPGA能實現(xiàn)或者比較適合實現(xiàn)什么樣的算法?
    發(fā)表于 05-26 20:18

    用FPGA實現(xiàn)雙調(diào)排序的方法(2)

    典型的排序算法包括冒泡排序、選擇排序、插入排序、歸并排序、快速
    的頭像 發(fā)表于 03-21 10:28 ?633次閱讀
    用FPGA<b class='flag-5'>實現(xiàn)</b>雙調(diào)<b class='flag-5'>排序</b>的方法(2)

    FPGA實現(xiàn)雙調(diào)排序算法的探索與實踐

    雙調(diào)排序(BitonicSort)是數(shù)據(jù)獨立(Data-independent)的排序算法,即比較順序與數(shù)據(jù)無關,特別適合并行執(zhí)行。在了解雙調(diào)排序
    發(fā)表于 03-14 09:50 ?640次閱讀
    FPGA<b class='flag-5'>實現(xiàn)</b>雙調(diào)<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索與實踐

    想聽聽48和大對數(shù)光纜的排序?

    48芯光纜和大對數(shù)光纜都是光纜中的一種,它們的區(qū)別在于芯數(shù)不同。48芯光纜指的是光纜中包含48根光纖,而大對數(shù)光纜則是指光纜中芯數(shù)超過了48芯。 在實際的光纜應用中,不同芯數(shù)的光纜需要進行不同的排序
    的頭像 發(fā)表于 03-12 10:44 ?610次閱讀

    C語言實現(xiàn)經(jīng)典排序算法概覽

    冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。
    的頭像 發(fā)表于 02-25 12:27 ?445次閱讀
    C語言<b class='flag-5'>實現(xiàn)</b>經(jīng)典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概覽

    STM32控制中常見的PID算法總結

    在很多控制算法當中,PID控制算法又是最簡單,最能體現(xiàn)反饋思想的控制算法,可謂經(jīng)典中的經(jīng)典。經(jīng)典的未必是復雜的,經(jīng)典的東西常常是簡單的,而且是最簡單的。
    發(fā)表于 12-27 14:07 ?1679次閱讀
    STM32控制中常見的PID<b class='flag-5'>算法</b>總結
    主站蜘蛛池模板: 中文在线观看免费网站| 91热久久免费频精品动漫99| 99精品免费久久久久久久久日本 | 国产亚洲精品A久久777777| 久久大综合| 人人爽久久久噜噜噜丁香AV| 亚洲精品乱码久久久久久直播| 99精品热视频30在线热视频| 国产午夜精品理论片| 男污女XO猛烈的动态图| 亚洲AV久久无码精品九九软件| 777黄色片| 国产午夜永久福利视频在线观看| 免费在线观看的毛片| 亚洲H成年动漫在线观看不卡| 99久久蜜臀亚洲AV无码精品| 果冻传媒2021一二三区| 亲伦在线观看| 樱桃视频影院在线播放| 国产欧美一本道无码| 欧美性FREE玩弄少妇| 用震蛋调教女性下面视频| 国产精品九九久久精品视| 男女床上黄色| 亚洲一区在线观看无码欧美| 高h乱np甄宓| 男人到天堂a线牛叉在线| 亚洲视频在线观看地址| 国产69精品久久久久麻豆| 免费看b站| 伊人久久天堂| 国产免费人成在线视频有码| 人人插人人射| 538视频这里只有精品| 精品国产90后在线观看| 天美传媒麻豆精品| 被肉日常np高h| 男污女XO猛烈的动态图| 中文字幕 人妻熟女| 寂寞夜晚免费观看视频| 午夜DY888国产精品影院|