選擇排序
//簡單選擇排序
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個元素不用選擇了,因為只剩下它乙個最大的元素了。那麼,在一趟選擇,如果乙個元素比當前元素小,而該小的元素又出現在乙個和當前元素相等的元素後面,那麼交換...