方法步驟:
(1)確定分界點。一般取q[l],q[r],q[(l+r)/2]作為樞紐。
(2)調整區間,左邊的都是小於等於樞紐值,右邊的都是大於等於樞紐值。(最重要)
(3)遞迴處理左右兩段。
快速排序模板**:
時間複雜度分析:nlog2n(平均複雜度),最壞情況是n^2(一般沒達到)void quick_sort(int q ,int l , int r)
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
方法步驟:
1.確定分界點mid= (l+r)/2。
2.遞迴排序left,right。 複雜度:o(logn)
3.歸併,合二為一。最重要時間複雜度o(n),每個元素只會被比較一次。
總時間複雜度:nlog2n
void
merge_sort
(int q,
int l ,
int r)
bool
check
(int x)
// 檢查x是否滿足某種性質
// 區間[l, r]被劃分成[l, mid]和[mid + 1, r]時使用:
intbsearch_1
(int l,
int r)
return l;
}// 區間[l, r]被劃分成[l, mid - 1]和[mid, r]時使用:
intbsearch_2
(int l,
int r)
return l;
}
bool
check
(double x)
// 檢查x是否滿足某種性質
double
bsearch_3
(double l,
double r)
return l;
}
演算法基礎課 高精度
j高精度演算法 常用的有加減,對於乘除我們只會用小數乘大數。首先對於高精度加法,應該使用string類來進行表示,然後對於此類問題還需要特別注意的就是對於乙個大數來說,我們應該進行倒置,這樣對於加減來說更為有利。對於高精度加法模板如下 應該先設定乙個t 0 然後分別加上每乙個數的對應位即可解決問題。...
演算法基礎課 雙指標演算法
首先對於雙指標演算法,必須明確,對於此問題來說,只能是乙個優化問題,核心思想是把乙個o n2 的時間複雜度問題給優化到o n 來解決。通用模板 按照樸素演算法 for int i 0 i for int j 0 j 按照某種性質進行優化 for int i 0,j 0 i while jcheck ...
基礎課 HTML學習筆記
1 head標籤 look at the title 2 文字標籤 最小字型大小 d標籤width 設定寬度 width 300px 設定固定寬度,不會隨著瀏覽器的寬度變化而變化 width 30 設定占用頁面寬度的百分比,隨著瀏覽器的寬度變化而變化 size 設定厚度 align 設定位置 靠左 ...