穩定排序(插入排序 氣泡排序 歸併排序)

2021-10-10 11:31:18 字數 1798 閱讀 8706

插入排序

我們可以從字面意思去理解這個排序方式,可以把序列前後分為兩部分有序序列和待排序列,不斷的在待排序列中取出乙個數按某規則(從大到小或者從小到大)插入到有序序列中,直到待排序列都完成排序結束。

**演示

視覺化演算法****推薦:

ps:本圖出處為此**

c語言**實現

void

insert_sort

(int

*num,

int n)

}return

;}

氣泡排序**演示

c語言**實現

歸併排序

歸併這個詞在中文的意思就是合併、併入的意思。而在資料結構中的定義是將兩個或者兩個以上的有序數列合成乙個新的數列。該演算法也是用的分治思想,把乙個大問題分解成小問題,進行遞迴求解,有分而治之的意思。

**演示

c語言**實現

void

merge_sort

(int

*num,

int l,

int r)

return;}

int mid =

(l + r)

>>1;

merge_sort

(num, l, mid)

;merge_sort

(num, mid +

1, r)

;int

*temp =

(int*)

malloc

(sizeof

(int)*

(r - l +1)

);int p1 = l, p2 = mid +

1, k =0;

while

(p1 <= mid || p2 <= r)

else

}memcpy

(num + l, temp,

sizeof

(int)*

(r - l +1)

);free

(temp)

;return

;}

演算法時間複雜度比較排序演算法

最好平均時間

最壞額外空間

複雜度插入排序

o(n)

o(n2)

o(n2)

o(1)

簡單氣泡排序

o(n)

o(n2)

o(n2)

o(1)

簡單歸併排序

o(n*log2n)

o(n*log2n)

o(n*log2n)

o(n)

複雜

氣泡排序,選擇排序,插入排序,歸併排序

1.氣泡排序 氣泡排序的思想,將陣列分為已排 右邊 和未排 左邊 兩部分。排序時每次在未排部分從左向右一次比較相鄰2個元素,如果左大於右則互換位置。每次都是指標從左邊第乙個依次相鄰比較,到指標指向倒數第二個未排結束比較。test 氣泡排序 public void fun4 int left 0 陣列...

python 實現插入排序 氣泡排序 歸併排序

def insertsort a 插入排序演算法 傳入乙個陣列,對陣列進行排序 print 排序前的順序 a length len a for i in range 1,length 從第二個開始 key a i j i 1 while j 0 and a j key a j 1 a j j j 1...

插入排序 歸併排序

插入排序 define len 5 int a len void insertion sort void int i,j,k for j 1 j len j k a j i j 1 while i 0 a i k a i 1 a i i a i 1 k 歸併排序 int a 8 void merge...