經典演算法系列之 插入排序

2021-10-01 22:53:34 字數 1399 閱讀 1747

1、前言

演算法,在計算機中的地位,就相當於人類大腦的決策中樞系統,哪怕最簡單的演算法,其精妙的思維方式,都可以讓人開啟一扇新的視窗。

演算法,它不僅僅只是狹義的用來解決電腦科學領域的問題,更是一種「思維方式」。演算法思維,是一種深度思考和創造的過程。

演算法,只有真正理解了,而不只是所謂的知道,並將應用到生活、工作、學習等各個方面,它將一定使人受益終生。

2、原理推導

插入排序,將陣列中的每乙個元素與它前面的元素遍歷比較,把符合排序條件的元素移到它排序的位置。

給定一組 的原始無序陣列,按照從小到大公升序排列,從後往前兩兩比較。

#step1

第1個數字和第2個數字開始兩兩比較,數字 和 位置互換,完成第一輪排序。

#step2

第3個數字和前面第1、2個數字開始比較。

第一次比較小於兩個數字置互換結果 。

第二次比較小於兩個數字置互換結果完成第二輪比較。

#step3

第4個數字和前面第1,2,3個數字開始比較。

第一次比較小於兩個數字置互換結果。

第二次比較小於兩個數字置互換結果。

第三次比較大於則跳出迴圈,完成第三輪比較。

#step4

第5個數字和前面第1,2,3,4個數字開始比較。

第一次比較小於兩個數字置互換結果。

第二次比較大於則跳出迴圈,完成第二輪比較。

#step5

第6個數字和前面第1,2,3,4,5個數字開始比較。

第一次比較小於兩個數字置互換結果。

第二次比較小於兩個數字置互換結果。

第三次比較小於兩個數字置互換結果。

第四次比較大於則跳出迴圈,完成第四輪比較。

至此,插入排序已經完成。

3、**示例

# 排序是前提,假設已經是有序陣列

public

static

void

insertsort

(int array)

else

}// 內層迴圈j--,temp表示陣列中後乙個數的值交換到前乙個位置

array[j]

= temp;

}}

4、禪定時刻

插入排序,如果後乙個數比相鄰的前面乙個數大,則不需要再與前面其他數值比對,相比氣泡排序大大減少了交換次數,提高排序效率。在部分已經確定的資訊基礎之上,縮小範圍,保證了效率和結果。不變的就是變化,能確定的就是變化。

作者簡介

思維的持續,乙個真的有思想,不穿格仔襯衫的程式設計師。

排序演算法系列之插入排序 1

排序,即是以一定的規則組織資料,排序演算法的優劣關鍵在於比較資料的交換和移動次數.排序演算法需要考慮的幾點 資料交換次數,移動次數,資料越界,演算法的實用性 符合多種型別 預知 使用c 拓展方法進行資料輸出,使用stringbuilder節約記憶體開銷 public static class deb...

排序演算法系列 2 插入排序

哈嘍,各位朋友,好久沒和你們說話了,我賊無聊 咳咳,本期繼續開始我們的排序演算法之路 額.這個部落格表情這麼少,怪不得個個都沒有老婆呢!內涵段子 演算法本來就是乙個異常難學的一項技術,如果你放棄了,你可以和碼農娛樂玩耍了,嘿嘿 2.插入排序 static void main string args ...

經典演算法之插入排序

一 基本思路 將乙個待排序的記錄,按照關鍵字大小插入到前面已經拍好的子串行的適當位置,直到全部記錄插入完成為止。如果序列基本有序,效率很高。二 include stdafx.h include includeusing namespace std void swap int a,int b void...