不同常數時間的操作(加或定址運算或位運算)執行時間不一樣
選擇最小的數,放到陣列的第乙個位置
時間複雜度:c*n+c*(n-1)+c*(n-2)+…+c*1
o(n^2), 額外空間複雜度:o(1)
兩兩比較並交換,直到無交換
時間複雜度:o(n^2), 額外空間複雜度:o(1)
左邊序列有序,右邊新加入乙個數,從右往左找到合適的位置插進去。
從0-0有序,0-1有序…到0-n有序
時間複雜度:最差o(n^2),最好:o(n)
無進製相加,性質:
0和任何數異或為這個數
任何數和自己異或為0
滿**換率和結合率
例1、應用swap(交換a,b的值):
a和b不能為同一記憶體位置
a = a^b
b = a^b
a = a^b
例2、陣列中兩個數出現奇數次,其他數都是偶數次
先從左到右異或得到 eor=a^b 不為0
找到某一位eor不為0的位數再選擇性的和原陣列異或,該位為1還是為0把陣列分成了兩個部分。
eor』 ^ eor得到另乙個數。
得到最右側的1: eor & (~eor +1) 與運算自己取反加一
時間複雜度:o(logn)
例1、在有序陣列中找某個數是否存在
例2、在有序陣列中找大於等於某個數最左側的位置
例3、區域性最小值問題
無序陣列中任意兩個相鄰的數不相等,求返回任意乙個區域性最小值。
時間複雜度小於o(n)
自己生成隨機數測試,使用兩種不同方法比較結果是否正確(遞迴和正太規劃、系統函式)。
求陣列的最大值,求解左右兩個子陣列的最大值再比較。
t(n) = 2*t(n/2) + o(1)
master 公式:
所以滿足第一種情況,時間複雜度位o(n),和普通遍歷時間複雜度一樣。
第一章 基礎演算法(一)
題目 給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下來q...
python第一章筆記 第一章 基礎
參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...
第一章 基礎
1單選 2分 該張量的維度是 1.3688478 1.0125661 0.17475659 0.02224463 正確答案 a你選對了 解析 b tf.tensor 1.3688478 1.0125661 0.17475659 0.02224463 shape 2,2 dtype float32 2...