分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
本來我是想重新編輯《乙個借鑑現代os的mmu的排序演算法》這篇文章的,但想來新的主題還是另起一篇為好。
首先要說明的是,上文中的那個演算法的**是有缺陷的,比如如果有重複的數字,那麼該實現將會沖掉重複的資料,正確的做法應該是在256叉樹的葉子節點維護乙個鍊錶,重複的數字全部鏈結到該鍊錶中。但由於我不是很會程式設計,不曉得一些現成的資料結構所在的庫是怎麼一種用法,實現這個可能需要重新做起,就算了,大致知道個意思就好了。
另外,更加重要的是,這個演算法其實是在執行一種插入排序,和標準的插入排序不同的是,該演算法會一次性把乙個數字插入到它應該在的位置,時間複雜度為o(1
)o(1
)看不出二者的區別,但是從細節上,你會發現這條直線還有個引數,這正是很多人所忽略的。引數由什麼決定?引數由約束決定!
在本文敘述的場景中,如果待排序的資料分布很密集,那麼顯然這個演算法是很好的選擇,如果不是,那就只能自行權衡了。
同樣的道理,快速排序非常快並不僅僅因為它叫做快速排序,和它的時間複雜度一樣的演算法多得是,但在統計意義上就是沒它優秀,所以大o並不能代表演算法的優劣!
昨天發燒,但今天就奇蹟般好了,沒有吃任何藥物,一度懷疑被感染了流感,或者是因為這麼冷的天穿短袖凍感冒了,但馬上就發現不是那回事,差點就被他們忽悠了,生活在眾人之間,就要被眾人的言論指使,然而我偏不,事後證明我是對的…不管怎樣吧,不要聽別人胡說,有可能95%的人說的都是錯了,他們乙個又乙個都是聽了別人錯誤的結論而已。要自己親自試一下才知道。我自己可以在冬天穿短袖,所以我就知道即便我發燒,也一定不是因為被凍到了,隨便別人怎麼說,在我看來都是胡說。
給我老師的人工智慧教程打call!
乙個新的演算法 珠排序
其實在c 裡面,有很多鮮為人知的演算法。比如說這個,珠排序,就是我翻了很久才找到的。珠排序到底是什麼呢?其實原理跟他的名字一樣簡單,大概是這樣的 首先,你要找到乙個算盤 上面有幾根柱子,可以放一些珠子。輸入呢就是有幾就那一行有幾個珠子。然後呢類似於乙個把這個算盤用力一震,使所有珠子子落下。最後得到的...
拓撲排序演算法的乙個應用
在visual studio net中,乙個解決方案可以包含多個專案,乙個專案可以引用若干其它專案。編譯的時候,vs會自動確定每個專案的編譯順序。vs究竟是如何計算出這個順序的呢?如果學習過資料結構,可以很容易回答出這個問題 拓撲排序 topological sort 上述介紹抽象,不如用實際案例來...
關於常用排序演算法的乙個總結
前段時間被人問到排序演算法,今天特此總結一下,冒泡,選擇,快排,歸併,插入這五種排序演算法。1.選擇排序 選擇排序是整體對比,每次選出你最需要的那個值,比如以下 首先選出最小的值,從小實現從小到大排序,外迴圈一次,內部迴圈記錄下最小的座標,只發生一次交換,它是一種穩定的排序演算法,時間複雜度為o n...