国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    685

    瀏覽量

    31317
  • 編譯
    +關注

    關注

    0

    文章

    694

    瀏覽量

    35158

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ADM6819/ADM6820:簡單電源排序器的技術剖析與應用指南

    ,為多電源系統的設計提供了有效的解決方案。下面我們就來詳細了解這兩款器件。 文件下載: ADM6819.pdf 一、特性亮點 1. 單芯片實現雙電源排序 ADM6819/ADM6820能夠在單芯片上實現
    的頭像 發表于 02-28 14:25 ?116次閱讀

    ADM1066:多功能電源監控與排序芯片的深度解析

    的解決方案。本文將深入探討ADM1066的特性、工作原理、應用場景以及使用方法,幫助電子工程師更好地理解和應用這款芯片。 文件下載: ADM1066.pdf 芯片特性 全面的電源監控與排序 ADM1066能夠對多達10路電源進行監控和
    的頭像 發表于 02-28 14:05 ?73次閱讀

    LTC2937:六通道電源排序器與電壓監控器的設計與應用

    功能強大的電源管理 IC,具備時間和事件驅動的排序功能,以及高精度的欠壓(UV)和過壓(OV)監控能力。它能
    的頭像 發表于 02-28 11:15 ?146次閱讀

    探索LM3880:三軌簡單電源排序器的卓越性能與應用

    提供了一種簡潔而高效的解決方案。 文件下載: lm3880.pdf 一、LM3880的特性亮點 1. 多軌排序能力 LM3880可以通過單個輸入信號對三個電壓軌進行排序,而且還能輕松級聯多達三個設備,實現對九個電壓軌的
    的頭像 發表于 02-26 17:20 ?493次閱讀

    德州儀器UCD9090A:10軌電源排序與監控的理想之選

    問題提供了強大而靈活的解決方案。本文將深入探討UCD9090A的特性、應用、詳細功能以及設計要點。 文件下載: ucd9090a.pdf 一、UCD9090A的特性亮點 1. 多軌監控與排序
    的頭像 發表于 02-26 16:25 ?75次閱讀

    MAX16050/MAX16051:具備反向排序功能的電壓監控與排序電路

    MAX16050/MAX16051:具備反向排序功能的電壓監控與排序電路 在電子系統設計中,對電源電壓的精確監控和有序控制至關重要。Maxim Integrated推出的MAX16050
    的頭像 發表于 01-31 17:15 ?780次閱讀

    單片機常用的14個C語言算法分享

    算法的描述:是對要解決一個問題或要完成一項任務所采取的方法和步驟的描述,包括需要什么數據(輸入什么數據、輸出什么結果)、采用什么結構、使用什么語句以及如何安排這些語句等。通常使用自然語言、結構化
    發表于 01-29 06:59

    C語言插入排序算法和代碼

    插入排序排序算法的一種,它不改變原有的序列(數組),而是創建一個新的序列,在新序列上進行操作。   這里以從小到大排序為例進行講解。   基本
    發表于 01-15 06:44

    C語言增量式PID的通用算法

    式PID算法,可以直接使用,不用更改什么東西,頂多改一下初始化時候的幾個參數限制范圍。 該算法思想是設計一個PID控制器類,使用的時候直接實例化一個PID對象即可,也可以實例化多個,每個都是獨立
    發表于 01-14 08:28

    光纖線芯都是按照什么顏色排序

    多次有朋友留言問到,光纖熔接顏色如何排序,這個在實際應用中還是比較多的,那么今天我們就不講原理了,直接用圖文簡單明了講光纖熔接色譜,大家可以了解下。 一、常規排序 1、4芯的排序:藍、橙、綠、棕
    的頭像 發表于 12-19 11:02 ?1370次閱讀

    C語言的常見算法

    # C語言常見算法 C語言中常用的算法可以分為以下幾大類: ## 1. 排序算法 ### 冒泡排序 (Bubble Sort) ```
    發表于 11-24 08:29

    SM4算法實現分享(一)算法原理

    ,Xi、Yi、rki為字,i=0,1,2,…,31。則本算法的加密實現為: 本算法的解密實現與加密實現結構是相同的,不同的只是提供的輪
    發表于 10-30 08:10

    復雜的軟件算法硬件IP核的實現

    具體方法與步驟 通過 C 語言實現軟件算法,并驗證了算法的有效性以后,就可以進行算法的 HDL 轉化工作了。通過使用 Altium Designer 的 CHC 編譯器(C to H
    發表于 10-30 07:02

    e203除法器算法改進(一)

    e203內部除法操作使用加減交替迭代法進行運算,除幾個特殊運算外,正常的除法操作需要33個周期才能輸出運算結果,極大程度地影響了系統的性能。我們對e203的除法器進行了新的算法實現并改進。目前高性能
    發表于 10-22 07:13

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

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