品鑑一個類Radix排序演算法的記憶體佔用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
本來我是想重新編輯《一個借鑑現代OS的MMU的排序演算法》這篇文章的,但想來新的主題還是另起一篇為好。
首先要說明的是,上文中的那個演算法的程式碼是有缺陷的,比如如果有重複的數字,那麼該實現將會沖掉重複的資料,正確的做法應該是在256叉樹的葉子節點維護一個連結串列,重複的數字全部連結到該連結串列中。但由於我不是很會程式設計,不曉得一些現成的資料結構所在的庫是怎麼一種用法,實現這個可能需要重新做起,就算了,大致知道個意思就好了。
另外,更加重要的是,這個演算法其實是在執行一種插入排序,和標準的插入排序不同的是,該演算法會一次性把一個數字插入到它應該在的位置,時間複雜度為O(1)O(1)看不出二者的區別,但是從細節上,你會發現這條直線還有個引數,這正是很多人所忽略的。引數由什麼決定?引數由約束決定!
在本文敘述的場景中,如果待排序的資料分佈很密集,那麼顯然這個演算法是很好的選擇,如果不是,那就只能自行權衡了。
同樣的道理,快速排序非常快並不僅僅因為它叫做快速排序,和它的時間複雜度一樣的演算法多得是,但在統計意義上就是沒它優秀,所以大O並不能代表演算法的優劣!
昨天發燒,但今天就奇蹟般好了,沒有吃任何藥物,一度懷疑被感染了流感,或者是因為這麼冷的天穿短袖凍感冒了,但馬上就發現不是那回事,差點就被他們忽悠了,生活在眾人之間,就要被眾人的言論指使,然而我偏不,事後證明我是對的…不管怎樣吧,不要聽別人胡說,有可能95%的人說的都是錯了,他們一個又一個都是聽了別人錯誤的結論而已。要自己親自試一下才知道。我自己可以在冬天穿短袖,所以我就知道即便我發燒,也一定不是因為被凍到了,隨便別人怎麼說,在我看來都是胡說。