国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

排序算法——直接插入排序

2019-11-08 19:49:45
字體:
來源:轉載
供稿:網友

直接插入排序:

  有一些教材上(我使用的教材就是如此)把直接插入排序理解成“存在兩表”,一個有序,一個無序,每次從無序表中取出元素,插入到有序表中的合適的位置中,使得“有序表”仍然有序,如此循環操作,最后得到一個有序的列表。我個人這樣并覺得不好理解(當時我就一直在找那兩個表在哪里??哈哈,搞笑)。

  經過我個人的理解消化之后,思路大概是這樣的:舉個例子,假設一個待排序的序列{57,68,59,52,60}

  首先,第一輪,從第2個元素,也就是68開始,與第1個元素(57)進行比較,68>57,那么兩個保持原來的位置,不換位,所以該序列還是{57,68,59,52,60};

  第二輪,到第3個元素(59)進行排序,拿59和前面的元素比較,一旦發現有比它大的元素,那么程序就會把那個大的元素后移。那么現在可以看到,當它比較到68時,發現68>59,于是68后移一位,那么68原來的位置就空了出來,59再往前與57比較,57<59,那么比較結束,57就填補到68之前的位置,即第二位。于是該序列現在就成了{57,59,68,52,60};

  第三輪,到第4個元素(52)進行排序操作,比較的方式還是和之前的一樣,一旦發現有比它大的元素,就暫停,將大的那個元素后移一位。那么可以知道,68、59、57都會后移一位,那么這個序列的第1的位置就空了出來,那么52會插入到第1的位置,所以,現在的序列為{52,57,59,68,60};

第四輪,同理,我們這下就很快地知道,在這一輪里,68會后移一位,60插到第4的位置,序列變成{52,57,59,60,68}

至此,排序結束。

總結一下:

直接插入排序的思想大概就是:將待排序的元素array[i]與前面的已經排好序的元素(這就是部分教材上所說的的“有序表”部分)進行比較,查找到合適的“安身之所”,部分元素整體后移一位,騰出位置給元素array[i],使“有序”部分依然有序,如此循環操作,最后就會得到一個有序的序列表,排序的次數為n-1輪(n為待排序元素個數)。

實現代碼:

結果輸出:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德格县| 洞头县| 常德市| 碌曲县| 凤翔县| 始兴县| 上饶市| 克东县| 天气| 太仓市| 垦利县| 千阳县| 绍兴市| 大冶市| 耿马| 台中市| 嘉义市| 沽源县| 巴楚县| 甘孜县| 黄石市| 罗源县| 中西区| 阳东县| 陇南市| 赫章县| 新兴县| 鄂尔多斯市| 梁河县| 额尔古纳市| 聊城市| 江孜县| 库尔勒市| 松滋市| 石楼县| 星座| 彭州市| 卢湾区| 玉树县| 黑河市| 桓仁|