七大排序之直接插入排序

2021-10-04 06:08:49 字數 604 閱讀 3881

整個區間被分為有序區間和無序區間,可以讓陣列的第乙個資料充當有序區間,其他是無序區間,每次將無序區間的第乙個數和有序區間最後乙個數作比較,如果無序區間的數比有序區間的數小,從有序區間的最後乙個數開始比較,直到這個數大於有序區間的數或者下標是 0 停止;如果要比較的數大於有序區間的最後乙個數,則不比較

public

static

void

insertsort

(int

arr)

arr[j+1]

= key;

//當arr[j]}

我們是不知道陣列有序或無序的,當陣列有序的時候,還是要乙個個向後比較,每次都arr[j+1]=key,i++,所以時間複雜度是o(n);當陣列逆序時,除了 i 要走,j 也要走,所以是o(n^2),沒有浪費多餘的空間,在原基礎上修改,空間複雜度o(1)

穩定,我們的**是當 arr[j]>key 時,才會將資料向後移,當 arr[j]=key 時,不需要這樣,所以當存在重複元素時,重複元素的相對位置是不變的,所以是穩定的。

七大排序演算法 直接插入排序及折半優化

思路分析 將乙個待排序元素,按其大小,插入到前面已經排好序的一組元素的合適位置上去,直到元素全部插完為止。簡單來說 end指已經排好陣列的最後乙個元素,end找到插入的位置 設定乙個temp,temp為已經排序好陣列的下乙個元素 用temp與end比較,如果temp 實現 void insertso...

八大排序 插入排序 直接插入排序

基本思想 將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。直接插入排序示例 如果碰見乙個和插入元素相等的,那麼插入元素把想插入的...

八大排序 直接插入排序

直接插入排序 straight insertion sort 的基本操作是將乙個元素插入到序列已經有序的那一部分中去,從而使序列中有序的部分逐漸擴大,直到整個序列有序。博主認為直接插入排序過程比較容易理解,所以不作過多贅述,直接上 include void main int length sizeo...