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 的。可是...