學習筆記5 替換空格(時間複雜度為O n )

2021-09-13 14:36:42 字數 563 閱讀 6513

void replaceblank(char string, int length)

//newlength為把空格替換成'%20'之後字串的長度

int newlength = originallength + 2 * numberofblank;

if(newlength > length) //判斷替換後字串的長度是否超出預設的length值

return;

int indexoforiginal = originallength;

int indexofnew = newlength;

while(indexoforiginal >= 0 && indexofnew > indexoforiginal)

else

indexoforiginal--;

}}

由於所有的字元都只複製(移動)一次,因此這個演算法的時間複雜度為o(n)。

若採用從前向後替換,假設字串的長度為n,對每個空格字元,需要移動後面o(n)個字元,因此對於含有o(n)個空格字元的字串而言,總的時間效率是o(n*n)。

時間 空間複雜度學習筆記

五 空間複雜度分析 六 複雜度分析高階 把 跑一遍,通過統計 監控,就能得到演算法執行的時間和占用的記憶體大小,並且能夠正確評估執行效率的方法,但是有非常大的侷限性。int cal int n return sum 假設每行 執行的時間都一樣,為 unit time。第 2 3 行 分別需要 1 個...

學習時間複雜度和空間複雜度

評判演算法的標準 時間複雜度 一般是最壞情況下的時間複雜度 根據數量級,描述時間複雜度,一般用 大 o 表示,記做 o f n n為資料的規模 常見數量級函式 當 n 增大時,數量級函式增長幅度排名 1.常數函式 n 100 1 次 sum 1 n n 2 1 次 print sum 1 次 上面的...

時間複雜度為O n 的排序

題目 某公司有幾萬名員工,請完成乙個時間複雜度為o n 的演算法對該公司員工的年齡作排序,可使用o 1 的輔助空間。分析 排序是面試時經常被提及的一類題目,我們也熟悉其中很多種演算法,諸如插入排序 歸併排序 氣泡排序,快速排序等等。這些排序的演算法,要麼是o n2 的,要麼是o nlogn 的。可是...