經(jīng)驗總結(jié)

經(jīng)驗總結(jié)

時間復雜度:

同一問題可用不同算法解決,而一個算法的質(zhì)量優(yōu)劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。

O(n)也是差不多的意思,也就是說n很大的時候復雜度約等于Cn,C是某個常數(shù)。

O(1)就是說n很大的時候,復雜度基本就不增長了,基本就是個常量C。

代碼實例:去除給定列表中的重復元素

MyList = [1, 2, 4, 7, 2, 7, 4, 8, 3, 9, 1]

ResultList = list()

for item in MyList:

? ? if item not in ResultList:

? ? ? ? ResultList.append(item)

以上代碼可以得到預期的結(jié)果,但是算法存在問題。

如果給定的列表很龐大,會存在以下問題:

1、在if做not in成員判斷的時候,時間復雜度是O(1);

2、列表的一次性讀取,會很消耗內(nèi)存。

針對問題1,改寫如下:

MyList = [1, 2, 4, 7, 2, 7, 4, 8, 3, 9, 1]

ResultList = list()

ResultSet = set()

for item in MyList:

? ? if item not in ResultSet:

? ? ? ? ResultList.append(item)

? ? ? ? ResultSet.add(item)

set在做成員判斷的時候,時間復雜度是O(1)的,比list要快,規(guī)模越大,效果越明顯。

針對問題2,可以使用布隆過濾器,以后再研究

。。。待續(xù) 。。。

。。。待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 0. 季度目標關(guān)注的核心問題回答 我的二季度發(fā)展策略如下: 這里是策略說明 1. Q1 的整體情況分析 這里上傳生...
    追追風的冰閱讀 379評論 0 0
  • 老人拄著拐杖 每天象一尊孤零的雕像 立在村口望呀望 望著親人們打工的方向 盼呀!盼呀! 盼得掛肚牽腸 盼得老眼昏花...
    王小永_6be2閱讀 275評論 10 40
  • 珠山唯有綠青松, 半坡衰草偎鳥鳴。 南天風雨催芽疾, 滿是健步繞圈人。 奔流退去家朋儻, 半亭風月?lián)崆俾暋?遠盼校...
    A都督閱讀 426評論 0 0
  • 485[思路]: 尋找0.1序列中連續(xù)為1的子序列的長度; 遍歷一次,統(tǒng)計;
    安東可閱讀 128評論 0 0
  • 春天是很容易做夢的季節(jié),倒是不錯,從寒假到現(xiàn)在我都一直做夢,夢里好像真實又遙遠,有時候我會驚醒,有時候會落空...
    去冰檸檬蜜閱讀 175評論 2 0

友情鏈接更多精彩內(nèi)容