chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

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

信盈達 ? 2024-06-04 08:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

efd2e72e-2205-11ef-bd4a-92fbcf53809c.jpg

今天以直接插入排序算法,給大家分享一下排序算法的實現(xiàn)思路,主要包含以下部分內容:

插入排序介紹

插入排序算法實現(xiàn)

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

efe5b3e0-2205-11ef-bd4a-92fbcf53809c.png

在添加新的記錄時,使用順序查找的方式找到其要插入的位置,然后將新記錄插入。


以{3,0,9,8,2}無序表按升序排列為例,有序表是一個虛擬的順序表:
1. 插入排序剛開始,有序表中沒有數(shù)據(jù),因此直接插入3即可。{3}

eff3c688-2205-11ef-bd4a-92fbcf53809c.png

2. 插入0的時候要和有序表中記錄3進行比較,0 <3,插入到3的左側。{0,3}

eff76ab8-2205-11ef-bd4a-92fbcf53809c.png

3. 插入9的時候,要和有序表中的記錄3進行比較,9 > 3 插入到3的右側{0,3,9}

effd1e72-2205-11ef-bd4a-92fbcf53809c.png

4. 插入8的時候,要和有序表中的9進行比較,9 > 8 8>3因此添加到 9和3之間{0,3,8,9}

f008e4be-2205-11ef-bd4a-92fbcf53809c.png

5. 插入2的時候,要和有序表中的 9 8 3 0依次比較,確定2位于0和3之間{0,2,3,8,9}

f0112da4-2205-11ef-bd4a-92fbcf53809c.png

分析:1、先寫框架2、實現(xiàn)排序邏輯3、驗證調整代碼



f015267a-2205-11ef-bd4a-92fbcf53809c.png

2.1先寫框架-我的預期

這是一段整理思路的過程。

int a[] = {3,0,9,8,2};int size = sizeof(a) / sizeof(int);int i;for(i=0;i{ printf("%d ",a[i]);}printf("\n"); // 傳遞整型數(shù)據(jù)和長度進去,對數(shù)據(jù)進行排序insertSort(a,size);
for(i=0;i{ printf("%d ",a[i]);}

預期效果:// 3 0 9 8 2// 0 2 3 8 9

2.2函數(shù)聲明

函數(shù)三要素:insertSort函數(shù)功能:實現(xiàn)對傳入數(shù)組的排序形參:數(shù)組,數(shù)組長度返回值:直接在原有數(shù)組中進行排序即可,無需返回值。
先寫函數(shù)聲明

void insertSort(int a[],int size){ // ......}


2.3實現(xiàn)排序邏輯1、尋找突破口按照直接插入排序的規(guī)則,需要對下標為1以后的每一個數(shù)據(jù)進行插入排序,先獲取到下標為1之后的每一個數(shù)據(jù)。

void insertSort(int a[],int size){ int i; int j; for(i=1;i { // a[i] 從下標為1開始,每循環(huán)一次向后獲取到一個數(shù)據(jù)。
} }

2、尋找排序規(guī)律// 使用當前a[i]值和i下標前面的每一個數(shù)值進行比較// 如果 a[i-1] > a[i] a[i] = a[i-1] -- a[i]這個數(shù)據(jù)空間值可能被覆蓋掉,// 下面可能還要多次使用到該數(shù)據(jù),// 因此可以將這個數(shù)據(jù)保存下來。// 繼續(xù)如果 a[i-2] > a[i] a[i-1] = a[i-2]//.....// 如果 a[i-j] < a[i] a[i-j+1] = a[i] --結束本次比較 ,a[i]已經找到它所在的位置了
// 考慮邊界// i-j最小值為0,下標不能越界3、偽代碼描述先將a[i]的值存起來到變量val里面開始循環(huán)比較 j,1<=j<=i(滿足i-j最小值為0),每次增加1,保證下標連續(xù)比較a[i-j]和val的值
如果a[i-j] > val,a[i-j]需要向后移動,即a[i-j-1] = a[i-j] 如果a[i-j] <= val;val可以直接放在a[i-j+1]的位置,即a[i-j-1] = val;結束本次循環(huán),進入下一個數(shù)的插入排序。
4、代碼實現(xiàn)

void insertSort(int a[],int size){ int i; int j; for(i=1;i { int val = a[i]; for(j=1;j<=i;j++) { if(a[i-j] <= val) { // 找到val坐在的位置了 a[i-j+1] = val; break; } else { a[i-j+1] = a[i-j]; }?
} } }

5、驗證代碼

f01900a6-2205-11ef-bd4a-92fbcf53809c.png

出錯:沒有達到預期,即邏輯存在缺陷


6、排查錯誤

排查錯誤的時候,可以將比較的次數(shù)和每次比較后數(shù)組中的結果打印出來,進行排查。

因為數(shù)組打印要遍歷,為了不影響其他循環(huán)變量的值,可以在聲明一個變量。

f01cb69c-2205-11ef-bd4a-92fbcf53809c.png

f03090d6-2205-11ef-bd4a-92fbcf53809c.png

從結果上看,第一次的0沒有插入成功,按照邏輯走一遍,發(fā)現(xiàn)i=1,j=1,0<3因此3向后移動一步,然后j=2,循環(huán)結束了。
也就是意味著,如果當前這個數(shù)是數(shù)組中的最小的數(shù),應該放在下標為0的這一步操作沒有做。
7、修正代碼

void insertSort(int a[],int size){ int i; int j; for(i=1;i { int val = a[i]; for(j=1;j<=i;j++) { if(a[i-j] <= val) { // 找到val坐在的位置了 a[i-j+1] = val; break; } else { a[i-j+1] = a[i-j];
// 如果當前a[i]是這個數(shù)組中最小的元素, // 交換位置后,只剩下0下標的位置了,需要將數(shù)據(jù)插入到0的位置上。 if(i-j == 0){ a[i-j] = val; } }
}
} }


運行代碼:

f0343a74-2205-11ef-bd4a-92fbcf53809c.png

本篇內容旨在幫助初學者整理寫算法代碼思路。

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

    關注

    30

    文章

    4975

    瀏覽量

    74349
  • 排序算法
    +關注

    關注

    0

    文章

    53

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    射頻頭壞了只能扔?手把手教你維修排查TNC插頭,干貨值得收藏!

    射頻接頭壞了只能剪掉重做?未必!本文由電蜂優(yōu)選(elecbee)專家親授,深度拆解 TNC 插頭的維修排查全流程。從中心針偏移糾偏、氧化層化學清理到組裝式接頭的無損重組,手把手教你如何通過 VNA
    的頭像 發(fā)表于 04-14 17:12 ?74次閱讀
    射頻頭壞了只能扔?<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>維修排查TNC插頭,干貨值得收藏!

    手把手教你學51單片機-C語言版

    ,沒有專業(yè)的人員帶領大家入門。 基于這些原因,我們編寫了這本《手把手教你學51單片機-C語言版》(第3版),并且配套了相關的視頻教程、電子教案、源代碼和實驗開發(fā)板(詳情瀏覽青島金思特電子有限公司網站獲取
    發(fā)表于 03-05 11:47

    從0到1,10+年資深LabVIEW專家,手把手教你攻克機器視覺+深度學習(5000分鐘實戰(zhàn)課)

    “告別檢測系統(tǒng)能力缺陷!10+年LabVIEW視覺資深專家手把手教你:5000+分鐘高清教程(含工具、算法原理、實戰(zhàn)操作、項目優(yōu)化全流程講解)”——從傳統(tǒng)視覺算法→深度學習建?!I(yè)級
    的頭像 發(fā)表于 12-02 08:07 ?725次閱讀
    從0到1,10+年資深LabVIEW專家,<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>攻克機器視覺+深度學習(5000分鐘實戰(zhàn)課)

    迅為Hi3403開發(fā)板極速啟航 | 手把手帶你玩轉核心例程,輕松上手AI視覺!

    迅為Hi3403開發(fā)板極速啟航 | 手把手帶你玩轉核心例程,輕松上手AI視覺!
    的頭像 發(fā)表于 11-19 13:56 ?1827次閱讀
    迅為Hi3403開發(fā)板極速啟航 | <b class='flag-5'>手把手</b>帶你玩轉核心例程,輕松上手AI視覺!

    【迅為RK3568開發(fā)板NPU實戰(zhàn)】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用

    【迅為RK3568開發(fā)板NPU實戰(zhàn)】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用
    的頭像 發(fā)表于 11-11 14:21 ?1470次閱讀
    【迅為RK3568開發(fā)板NPU實戰(zhàn)】別再閑置你的NPU!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>玩轉RKNN-Toolkit2 的使用

    【RK3568 NPU實戰(zhàn)】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果

    【RK3568 NPU實戰(zhàn)】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果
    的頭像 發(fā)表于 11-10 15:58 ?1230次閱讀
    【RK3568 NPU實戰(zhàn)】別再閑置你的NPU!<b class='flag-5'>手把手</b>帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果

    手把手教你AT指令APN設置:專網連接零門檻!

    無論你的技術背景如何,本教程都將以手把手的方式,拆解AT指令APN設置的全流程。專網連接不再是門檻,即刻開啟自主配置之旅! APN是設備連接到運營商網絡的“身份證” ——當設備插入SIM卡并注冊到
    的頭像 發(fā)表于 09-04 14:40 ?1340次閱讀
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>AT指令APN設置:專網連接零門檻!

    RT-Thread Nano硬核移植指南:手把手實現(xiàn)VGLite圖形驅動適配 | 技術集結

    VGLite是NXP提供的輕量級2D圖形API,本文將手把手帶你實現(xiàn)VGLite圖形驅動適配RT-Thread。文章分為上、下兩篇,將手把手教您移植。上篇對RT-ThreadNano內核與Finsh組件進行移植,下篇則教您改寫SDK中的VGLite代碼以將其適配到RT-T
    的頭像 發(fā)表于 07-17 14:40 ?3601次閱讀
    RT-Thread Nano硬核移植指南:<b class='flag-5'>手把手</b>實現(xiàn)VGLite圖形驅動適配 | 技術集結

    【精選直播】手把手教你做PC第十二課:WIFI 驅動框架適配

    手把手教你做PC》系列直播課再度開播!《KaihongOS筆記本電腦開發(fā)實戰(zhàn)第十二課:WIFI驅動框架適配》將于07月02日19:00開播↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播間
    的頭像 發(fā)表于 07-01 08:08 ?690次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第十二課:WIFI 驅動框架適配

    【精選直播】手把手教你做星閃無人機第十課:KaihongOS Lite系統(tǒng)專題

    手把手教你做星閃無人機》系列直播課再度開播!《KaihongOS星閃無人機開發(fā)實戰(zhàn)⑩:KaihongOSLite系統(tǒng)專題》↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播間依托筆電實戰(zhàn)產品
    的頭像 發(fā)表于 06-10 08:06 ?623次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無人機第十課:KaihongOS Lite系統(tǒng)專題

    手把手教你如何調優(yōu)Linux網絡參數(shù)

    在高并發(fā)網絡服務場景中,Linux內核的默認網絡參數(shù)往往無法滿足需求,導致性能瓶頸、連接超時甚至服務崩潰。本文基于真實案例分析,從參數(shù)解讀、問題診斷到優(yōu)化實踐,手把手教你如何調優(yōu)Linux網絡參數(shù),支撐百萬級并發(fā)連接。
    的頭像 發(fā)表于 05-29 09:21 ?1165次閱讀

    【精選直播】手把手教你做星閃無人機第九課:無線通信編程之 SLE 專題

    手把手教你做星閃無人機》系列直播課再度開播!《KaihongOS星閃無人機開發(fā)實戰(zhàn)⑨:無線通信編程之SLE專題》↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播間依托筆電實戰(zhàn)產品案例細致剖析
    的頭像 發(fā)表于 05-27 08:05 ?569次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無人機第九課:無線通信編程之 SLE 專題

    明晚七點!手把手教你做PC第九課:全功能TypeC驅動框架適配

    手把手教你做PC》系列直播課再度開播!《KaihongOS筆記本電腦開發(fā)實戰(zhàn)第九課:全功能TypeC驅動框架適配》將于5月21日19:00開播↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播
    的頭像 發(fā)表于 05-20 08:07 ?685次閱讀
    明晚七點!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第九課:全功能TypeC驅動框架適配

    正點原子Linux系列全新視頻教程來啦!手把手教你MP257開發(fā)板,讓您輕松入門!

    正點原子Linux系列全新視頻教程來啦!手把手教你MP257開發(fā)板,讓您輕松入門! 一、視頻觀看 正點原子手把手教你學STM32MP257-第1期:https://www.bilib
    發(fā)表于 05-16 10:42

    周三晚19:00,手把手教你做PC第七課:Audio 音頻驅動框架適配

    手把手教你做PC》系列直播課再度開播!《KaihongOS筆記本電腦開發(fā)實戰(zhàn)⑦:Audio音頻驅動框架適配》將于4月23日19:00開播↑掃碼入群,領課程講義資料包↑深開鴻資深工程師親臨直播間依托
    的頭像 發(fā)表于 04-22 08:05 ?668次閱讀
    周三晚19:00,<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第七課:Audio 音頻驅動框架適配