資料結構之插入排序

2021-10-09 17:07:21 字數 773 閱讀 2789

原理:插入排序其實就是將氣泡排序包裝了一下,氣泡排序是利用兩個資料對比之後立馬進行交換,而插入排序利用資料對比但推遲了資料移動的時機,插入排序移動的時機在於當出現第乙個較小的資料才發生整體的資料遷移,插入排序將序列分為左右兩塊,左邊朝最低端遞減,右邊則只需要取乙個資料比較。

void

insertsort

(int arr,

int n)

arr[j +1]

= temp;

//注意此處的j值變化,上個迴圈中j多減了一次

}}

穩定性分析:上述實現中進行資料遷移的前提是左邊資料小於右邊頭資料,因此在等於的情況下預設插入在該位置之後,因此插入排序是穩定的排序演算法空間複雜度分析:在演算法中,利用有限量的變數進行資料比較與交換,因此空間複雜度為o(1),屬於原地排序的範疇時間複雜度分析:同樣,最好情況為公升序,依據**可以看出內層的迴圈處於break跳出的狀態,因此只要內層比較1一次,外層則只需要比較n次即可,因此最好情況下的時間複雜度為o(n),最壞情況為降序序列,此時每比較一次都會進行一次遷移,再加上陣列的遷移的複雜度為o(n),因此最壞情況下的時間複雜度為o(n²),因此平均的時間複雜度為o(n²)

資料結構之插入排序 折半插入排序

排序思路 通過折半查詢的方式找到合適的插入位置再插入。演算法實現 public class biinsertsort else 插入點在 mid 1,right left mid 1 直到找到合適的位置 left或right 1 接下來就將left right 1後的元素後移 for int j i...

資料結構之 插入排序

包括 直接插入排序,二分插入排序 又稱折半插入排序 鍊錶插入排序,希爾排序 又稱縮小增量排序 假定這個陣列的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置為止.這具演算法在排完前k個數之後,可以保證a 1 k 是區域性有序的...

資料結構之插入排序

插入排序有,直接插入排序 折半插入排序 2 路插入排序和表排序。如果了解了這些排序的思路,那麼 也就容易理解了。直接插入排序思路是 把第乙個當做已排好序的,直接從第二個開始記為當前資料 當前資料需要儲存到a 0 把a 0 當做乙個哨子 然後用當前資料跟前面的資料比下去,大於當前資料的數都往後移一位。...