演算法基礎課筆記

2021-10-11 04:05:16 字數 1082 閱讀 9843

方法步驟:

(1)確定分界點。一般取q[l],q[r],q[(l+r)/2]作為樞紐。

(2)調整區間,左邊的都是小於等於樞紐值,右邊的都是大於等於樞紐值。(最重要

(3)遞迴處理左右兩段。

快速排序模板**:

void quick_sort(int q ,int l , int r) 

quick_sort(q,l,j);

quick_sort(q,j+1,r);

}

時間複雜度分析:nlog2n(平均複雜度),最壞情況是n^2(一般沒達到)

方法步驟:

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 設定位置 靠左 ...