以圖明志

計算機算法

[專題] 快速排序里的學問:從猜數字開始

猜數字里的算法思想
我們先來玩一個猜數字游戲:我心里默念一個1~64之間的數,你來猜(你只能問答案是“是”或“否”的問題)。為了保證不論在什么情況下都能以盡量少的次數猜中,你應該采取什么策略呢?很顯然,二分。先是猜是不是位于1~32之間,排除掉一半可能性,然后對區間繼續二分。

計算機算法

[專題] 快速排序里的學問:再看看稱球問題

根據問題選擇N分法
12個小球,其中有一個是壞球。有一架天平。需要你用最少的稱次數來確定哪個小球是壞的并且它到底是輕還是重。這個問題是一道流傳已久的智力題。網絡上也有很多講解,還有泛化到N個球的情況下的嚴格證明。也有零星的一些地方提到從信息論的角度來看待最優解法。本來我一直認為這道題目除了試錯之外沒有其它高妙的思路了,只能一個個方法試,然后看看哪種方案最少。

計算機算法

[專題] 快速排序里的學問:信息熵

從信息熵角度去理解問題
信息是個很抽象的概念。人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少。比如一本五十萬字的中文書到底有多少信息量。直到1948年,香農提出了“信息熵”的概念,才解決了對信息的量化度量問題。一條信息的信息量大小和它的不確定性有直接的關系。比如說,我們要搞清楚一件非常非常不確定的事,或是我們一無所知的事情,就需要了解大量的信息。

計算機算法

[專題] 編程之美2.3筆記:尋找發帖“水王”

降低問題規模的思想
抽象就是從問題中提取有用的,本質的特征,然后將問題用一個簡潔但包含同樣信息的模型表示出來。復雜的問題經抽象后,可能會變成一個簡單的問題,也可能會變成一個曾經遇到的問題,當然也可能仍然是復雜的問題。不管抽象后得到的結果是哪一種,看著抽象后的問題,想出解的可能性必然比直接看原題想的可能性大。

計算機算法

[專題] 快速排序里的學問:快速排序的過程

理解快速排序的工作機制
通過前面問題以及引入了“信息熵”的概念,我們可以重新來理解排序的本質:一組未排序的N個數字,它們一共有N!種重排,其中只有一種排列是滿足題意的(譬如從大到小排列)。換句話說,排序問題的可能性一共有N!種。任何基于比較的排序的基本操作單元都是“比較a和b”,這就相當于猜數字游戲里面的一個問句。

計算機算法

[專題] 快速排序里的學問:霍爾與快速排序

再次深入理解快速排序
霍爾 (Sir Charles Antony Richard Hoare) 是一位英國計算機科學家,他是著名的快速排序 (QuickSort) 的發明者。在平均狀況下,排序 n 個項目要Ο(n log n) 次比較,而且通常明顯比其他Ο(n log n) 演算法更快。所以它是一個被廣泛使用的算法。在一次采訪中,霍爾談到了發明這個算法的背景。

計算機算法

[專題] 快速排序里的學問:霍爾快排的實現

霍爾快排的C語言實現
專題的前一篇講了快速排序的始祖——霍爾快排,那么這里就簡單地實現以下霍爾快排。補充說明下,快排的一個核心步驟是選取樞紐元,通常的做法是將第一個元素用作樞紐元,《算法導論》里的快排例子和Hoare快排都是這種樞紐元選擇。排序的思路是,選定一個樞紐元,比樞紐元大的全部丟到右邊,比樞紐元小的全部丟到左邊。

計算機算法

[專題] 快速排序里的學問:樞紐元選擇與算法效率

樞紐元選擇也有學問
通常的、沒有經過充分考慮的選擇是將第一個或最后一個元素用作樞紐元。如果輸入是隨機的,那么這是可以接受的,但是如果輸入是預排序的或者是反序的,那么這樣的樞紐元就產生一個劣質的分割,因為所有的元素不是被劃入S1就是被劃入S2。更有甚者,這種情況發生在所有的遞歸調用中。

計算機算法

[專題] 快速排序里的學問:隨機化快排

選擇隨機數作為樞紐元
一般來說隨機選取樞紐元這種策略非常安全,除非隨機數生成器有問題(這不像你所想象的那么罕見),因為隨機的樞紐元不可能總在接連不斷地產生劣質的分割。另一方面,隨機數的生成一般是昂貴的,根本減少不了算法其余部分的平均運行時間。算法與前面《算法導論》里的例子差不多,只是在調用分割Partition時加入一個隨機數,具體可以參看程序。

互聯網時代

為什么互聯網產品創業成功率不足1%?

能活下去就已經很不容易了
眾所周知,互聯網新產品的成功率可能不足1%。不成功的產品勉強維持幾年,終究還是會化為粉末。相當于互聯網新產品的存活率可能不足1%。講這件事,首先得對成功產品下一個定義:譬如有獨特的品牌價值,有相當大的用戶量,以及可靠的盈利模式。沒錯,能達到標準的不足1%,別的都只不過是炮灰。
1 / 1 首頁 < Prev 1 Next > 尾頁 頁碼:
云南快乐十分走势一定牛 重庆麻将规则 qq分分彩在线计划 江西多乐彩历史开奖 北京pk拾赛车官方网 赛车快速 幸运赛车技巧 正规问卷调查赚钱网 排列五开奖历史 赛车pk10多少分钟一期 神来棋牌软件大全