時間複雜度:o(n
logn
)o(nlogn)
o(nlog
n),但是實際軟開中,快排效能更好。
堆性質:
堆排序(從小到大,利用最大堆和陣列)
從後往前堆化陣列元素,此時最大元素在首位置
交換元素堆化
**
#include
#include
using
namespace std;
void
heapsort
(int
* array,
int n)
;void
buildheap_
(int
* array,
int n)
;//建立最大堆
void
heapify_
(int
* array,
int n,
int idx)
;//調整idx節點滿足堆性質
void
swap_
(int
* array,
int aidx,
int bidx)
;void
heapsort
(int
* array,
int n)
}void
buildheap_
(int
* array,
int n)
void
heapify_
(int
* array,
int n,
int idx)
}void
swap_
(int
* array,
int a,
int b)
intmain()
;heapsort
(array,9)
;for
(auto i : array)
cout << i <<
" ";
cout << endl;
getchar()
;return0;
}
手撕演算法 排序
時間複雜度o n 2 o n 2 o n2 空間複雜度 o 1 穩定 從第乙個元素開始,認為左邊的序列是有序的,從有序部分的最後乙個向前比較,如果當前元素小於有序部分就交換,否則比較下乙個元素。function insertmerge arr else return arr let arr 1 5,...
Python手撕排序演算法
氣泡排序 公升序 歸併排序 公升序 分而治之 每次在若干無序資料中查詢最小數,放在無序資料的首位。1.從n個元素的列表中找最小值及其下標,與第乙個元素交換 2.從第二個元素開始的n 1個元素中找最小值及其下標,與第二個元素交換 3.以此類推,n 1輪後即為排好序的資料 a 49 38,65 97,7...
手撕演算法 adaboost
adaboost是典型的boosting演算法。boosting演算法的核心思想是 上乙個模型對單個樣本 的結果越差,下個模型越重視這個樣本 增大該樣本的權重,加大模型 錯的成本 提公升樹就是每個模型都是決策樹,提公升樹種效果比較好的是gbdt和xgboost,入門是adaboost。adaboos...