排序演算法(n 2級)

2021-09-26 01:23:06 字數 852 閱讀 4061

選擇排序

//簡單選擇排序

void

selectsort

(t arr,

int n)

swap

(arr[i]

,arr[minindex]);

}}

插入排序

//簡單插入排序

//寫法一

void

insertsort

(t arr,

int n)}}

//寫法二

void

insertsort

(t arr,

int n)

arr[j]

=temp;}}

/*示例過程

2 4 5 6 | 3

2 4 5 6 | 6

2 4 5 5 | 6

2 4 4 5 | 6

2 3 4 5 | 6

*///寫法3(原理和寫法二一樣,為了和下面的希爾排序作比較)

void

insertionsort

(t arr,

int n)

return

;}

希爾排序(插入排序的優化)

下面這個部落格對希爾排序的解釋較好

//希爾排序(插入排序的優化)

void

shellsort

(t arr,

int n)

while

(h>=1)

arr[j]

=temp;

} h/=3

;}}

排序演算法 n 2級別

n 2級別的演算法,是排序演算法中,效率最低的,也稱暴力法。主要有 選擇排序,插入排序,氣泡排序。效率較高的希爾排序 1.選擇排序 selection sort 原演算法思想是 從左到右遍歷出最大的,放到右端。然後繼續,每次拿出最大的,放在右端。template void selectionsort...

烷基計數 烷烴計數 n 2演算法

烷基計數問題 求每個節點的兒子不超過三個,且大小為 n 的有根樹的數量。1 leq n leq 2000 設 f i j 為總共 i 個節點,根節點度數為 j 的方案數。考慮從 1到n 1 列舉乙個當前最大的子樹大小 sz 和選的個數 k 把他接在原來的部分方案上。於是就有 f i j f i sz...

排序演算法 選擇排序(時間複雜度n 2,不穩定)

選擇排序是給每個位置選擇當前元素最小的,比如給第乙個位置選擇最小的,在剩餘元素裡面給第二個元素選擇第二小的,依次類推,直到第n 1n 1個元素,第nn個元素不用選擇了,因為只剩下它乙個最大的元素了。那麼,在一趟選擇,如果乙個元素比當前元素小,而該小的元素又出現在乙個和當前元素相等的元素後面,那麼交換...