演算法 三大簡單 慢速排序演算法及C 實現

2021-09-12 07:01:17 字數 1603 閱讀 6156

穩定性定義

優缺點c++實現

模擬排序撲克牌,新牌《舊牌,舊牌依次後移

從第乙個位置開始比較,找出最小的,和第乙個位置互換,開始下一輪。

從左到右,陣列中相鄰的兩個元素進行比較,將較大的放到後面。每一趟排序,最大的數移到最後面,每一趟排序以此交換的次數會減一,因為每一趟排序後,有乙個數已經達到指定位置

eg:趟數元素0

5 4 3 2 1

14 5 3 2 1

14 3 5 2 1

14 3 2 5 1

14 3 2 1 5 第一趟排序5歸位,交換次數:n-1 = 4

23 4 2 1 5

23 2 4 1 5

23 2 1 4 5第二趟排序4歸位,交換次數:4-1=3

32 3 1 4 5

32 1 3 4 5第三趟排序3歸位,交換次數:3-1=2

41 2 3 4 5第四趟排序2歸位,交換次數:2-1=1

舉個例子:5,8,5,2,9 我們知道第一遍選擇排序第乙個元素5會和2交換,那麼原序列中2個5的相對位置前後順序就破壞了

這三種演算法的優點簡單,缺點慢

型別平均

最好最壞

輔助儲存

穩定性直接插入

o(n

2n^2

n2)o(n)

o(n 2)

n^2)

n2)1

穩定直接選擇

o(n

2n^2

n2)o(n

2o(n^2

o(n2

)o(n2)

n^2)

n2)1

不穩定冒泡

o(n

2n^2

n2)o(n)

o(n 2)

n^2)

n2)1

穩定

void

insert_sort

(int

* array,

int len)

}}

//選擇排序

void

select_sort

(int array,

int array_len)

}//最小值放到前面,可能會破壞相等數的前後順序,不穩定

int tmp = array[array_min_index]

; array[array_min_index]

= array[i]

; array[i]

= tmp;

}}

void

bubble_sort

(int array,

int array_len)}}

}

void

bubble_sort

(int

* array,

int len)}if

(is_sort)

break;}

}

lanczos演算法及C 實現(一)框架及簡單實現

其中 u 是列正交矩陣,即 u tu i 每一列為乙個特徵向量,s 是對角陣,對角線上每個元素為特徵值。r 為分解的秩 lanczos演算法分三步求解 1 對 x 進行正交變換得到乙個三對角陣 t x ptp t 其中 p 為正交陣 t left begin alpha 0 beta 1 0 0 0...

三大排序演算法

當前結果是從大到小,若想從小到大排序,將a j a j 1 改為 a j a j 1 即可 a 1,4,2,5,22,3 n len a for i in range 1 n for j in range n i if a j a j 1 a j a j 1 a j 1 a j print a 當前...

三大初級排序演算法

1 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是o n 2 的演算法。2 插入排序 插入排序通過把序列中的值插入乙個已經排序好的序列中,直到該序列的結束。3 shell排序 shell排序通...