讀書筆記 資料結構(2)演算法分析

2021-06-16 20:02:00 字數 1641 閱讀 9906

演算法是為求解乙個問題需要遵循的、被清楚地制定的簡單指令的集合。對於乙個問題,一旦給定某種演算法並且以某種方式確定其是正確的,那麼重要的一步就是確定該演算法將需要多少諸如時間或空間等資源量的問題。

典型增長率

估計執行時間

1.for迴圈

一次for迴圈的執行時間至多是該for迴圈內語句的執行時間乘以迭代的次數。

2.巢狀的for迴圈

從裡向外分析這些迴圈。在一組巢狀迴圈內部的一條語句總的執行時間為該語句的執行時間乘以該組所有的for迴圈的大小的乘積。

3.順序語句

將各個語句的執行時間求和即可。(這意味著,其中的最大值就是所得的執行時間。)

4.if/else語句

乙個if/else語句的執行時間從不超過判斷再加上s1和s2中執行時間長者的總的執行時間。

最大子串行和問題的解

int maxsubsequencesum(const int a,int n)

else if (thissum<0)

}return maxsum;

}

--------------------我是分割線-----------------------

網上找聯機演算法只有這乙個例子(求最大子串行的和),被不同的人各種引用……求資料啊求資料!

----------------------------我也是分割線--------------------------

下面的資料摘自:

我想,這是我能找到的最好的資料了……

現假設你在pie上徵友,或者以其它方式,選定了某些約會物件,比如 n=

20 個。約會當然得乙個乙個來,那麼假設

可以將所有已約會的物件按優劣排序,但無法得知他們在所有的人裡面的排名。在約會過程中,你知道某人是你目前已見到的最好的,但當時還不能確定是不是所有人裡面最好的。

如果你在約會當時決定放棄某人,後面再沒有機會和此人和好——好馬不吃回頭草。

選定意中人後,約會結束——騎驢找馬是不道德的。

ok,現在目標當然是找到你心目中最喜歡的人。關係定得太早,會因為第2條假設——精彩的還在後頭,定得太晚,會因為第3條——而後悔莫及。所以,什麼策略才能讓你以最大概率找到你最滿意的那個人呢?

乙個簡單而且自然的方法是,待定

k ,與前

k 個人約會,不做任何選擇。繼續約會直到遇到比這前k個人還好的那個人為止。

通過概率計算得出,這個方法比我們想象中要好得多。通過選取合適的k=

n/e∼

0.37n∼

7

,有接近40%的機會選中最好的那位,有幾乎70%的機會選中最好或者次好的那位。

可以證明,上面的策略已經是最優的了。(證明在此:37 rule is optimal,英文)。

這個問題在日常生活中有更多應用。比如你打算在30歲前結婚,現在20歲。那麼在24歲前先別確定目標,24歲以後遇到比之前都好的就可以定下來。這幾乎就是你能達到最好的結果了——假設你的候選人在這十年是均勻或者隨機出現的。

這種策略也許能說明為何初戀成功率低?

以上所用都是愛情和婚姻的簡化模型,沒有考慮愛情中的主觀因素。所以,請只把它當作乙個腦力遊戲。

資料結構讀書筆記2

一切為了 merge 1.大話資料結構 1.個人感覺,這一塊 大話資料結構 作者搞的略混。也有少許我不贊成的地方,會在之後的工作中,改正我認為不完美的地方。2.畢竟現在不是大師,改正過程中我會以實際執行為標準,並且查閱相關的大牛們編著的書籍。3.正如我開頭所說一切為了merge,形成自己的知識體系才...

讀書筆記 資料結構(1)關於遞迴

當乙個函式用它自己來定義時就稱為遞迴。但重要的是要記住,c提供的僅僅是遵循遞迴思想的一種企圖。不是所有的數學函式都能有效地 或正確地 由c的遞迴模擬來實現。遞迴的4個基本法則 1.基準情形。必須要有某些基準的情形,它不用遞迴就能求解。2.不斷推進。對於那些需要遞迴求解的情形,遞迴呼叫必須總能夠朝著產...

讀書筆記 資料結構(1)開篇吐槽

離職好多天了,本來要陪著兩個從青島來的哥們遊北京,但是這兩個人太屌絲了,昨晚上兩個去了三里屯酒吧花了九百多 所以今天他們去北海我就沒跟著,不想被坑。打算寫寫資料結構的東西,回憶一下各種知識,看看回青島能不能找個工作,不行我就去軟體園下面賣盒飯。我是吐槽專用分割線 關於資料結構的書,我偏好機械工業出版...