PHP array_multisort()函數超詳細理解
906
2022-05-29
如果有人問你哪種排序算法是你最喜歡的,可能你會偏愛簡單的冒泡排序,也有可能會選擇具備分治思想的快速排序或者歸并排序。
但如果有人問你你所見過哪些奇葩的算法時,你的回答會是什么?下面,我就將網上腦洞大開的一些奇葩算法畫出來,以饗讀者。
如果有人問你哪種排序算法是你最喜歡的,可能你會偏愛簡單的冒泡排序,也有可能會選擇具備分治思想的快速排序或者歸并排序。
但如果有人問你你所見過哪些奇葩的算法時,你的回答會是什么?下面,我就將網上腦洞大開的一些奇葩算法畫出來,以饗讀者。
睡眠排序
好像寫這個排序的人,已經被老板開除了,但是他火了。根據CPU的調度算法實現的,對一組數據進行排序,不能存在負數值,這個數是多大,那么就在線程里睡眠它的10倍再加10,不是睡眠和它的數值一樣大的原因是,當數值太小時,誤差太大,睡眠的時間不比輸出的時間少,那么就會存在不正確的輸出結果。
猴子排序
這是誰想出來的,我保證不打死他。隨機打亂數組,檢查是否排好序,若是,則輸出,否則再次打亂,再檢查…最佳情況O(n),平均O(n*n!),最壞可執行直到世界的盡頭。。
一個有趣的理論:一只猴子隨機敲打打字機鍵盤,如果時間足夠長,總是能打出特定的文本,比如莎士比亞全集。^_^
面條排序
雖然我不喜歡吃面條,但我最服的就是這個腦洞。找到數組中最大和最小的兩個數(O(n)),讓最大的數對應一根很長的面條,最小的數對應一根很短的面條。
這里的數與面條長度的對應可以用一個嚴格遞增的函數來映射。重新遍歷數組,每遇到一個數,就取一根面條,把它切成這個數對應的長度,可以得到n根面條。
接下來,一手握住這n根面條,稍微用力,別握太緊,在平放的桌面上直立著放下,讓所有的面條底端接觸到桌面。另一只手平行于桌面,從面條上方緩慢往下移動,每當這只手碰到一根面條,移走它,并把對應的數輸出到結果數組中,直到移走全部面條。
除此之外,你們還見過哪些奇葩的排序算法?
其他
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。