統(tǒng)治世界的 10 大算法,你知道幾個(gè)?
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
本文轉(zhuǎn)自|視覺(jué)算法 ![]()
一篇有趣的文章《統(tǒng)治世界的十大算法》中,作者George Dvorsky試圖解釋算法之于當(dāng)今世界的重要性,以及哪些算法對(duì)人類(lèi)文明最為重要。
1 排序算法
所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來(lái)的操作。排序算法,就是如何使得記錄按照要求排列的方法。排序算法在很多領(lǐng)域得到相當(dāng)?shù)刂匾暎绕涫窃诖罅繑?shù)據(jù)的處理方面。一個(gè)優(yōu)秀的算法可以節(jié)省大量的資源。
![]()
穩(wěn)定的
冒泡排序(bubble sort) — O(n^2)
雞尾酒排序(Cocktail sort,雙向的冒泡排序) — O(n^2)
插入排序(insertion sort)— O(n^2)
桶排序(bucket sort)— O(n); 需要 O(k) 額外空間
計(jì)數(shù)排序(counting sort) — O(n+k); 需要 O(n+k) 額外空間
合并排序(merge sort)— O(nlog n);需要 O(n) 額外空間
原地合并排序— O(n^2)
二叉排序樹(shù)排序 (Binary tree sort) — O(nlog n)期望時(shí)間;O(n^2)最壞時(shí)間;需要 O(n) 額外空間
鴿巢排序(Pigeonhole sort)— O(n+k); 需要 O(k) 額外空間
基數(shù)排序(radix sort)— O(n·k); 需要 O(n) 額外空間
Gnome 排序— O(n^2)
圖書(shū)館排序— O(nlog n) withhigh probability,需要(1+ε)n額外空間
選擇排序(selection sort)— O(n^2)
希爾排序(shell sort)— O(nlog n) 如果使用最佳的現(xiàn)在版本
組合排序— O(nlog n)
堆排序(heapsort)— O(nlog n)
平滑排序— O(nlog n)
快速排序(quicksort)— O(nlog n) 期望時(shí)間,O(n^2) 最壞情況;對(duì)于大的、亂數(shù)列表一般相信是最快的已知排序
Introsort—O(nlog n)
Patience sorting— O(nlog n+k) 最壞情況時(shí)間,需要額外的 O(n+ k) 空間,也需要找到最長(zhǎng)的遞增子串行(longest increasing subsequence)
Bogo排序— O(n× n!) 期望時(shí)間,無(wú)窮的最壞情況。
Stupid sort— O(n^3); 遞歸版本需要 O(n^2)額外存儲(chǔ)器
珠排序(Bead sort) — O(n) or O(√n),但需要特別的硬件
Pancake sorting— O(n),但需要特別的硬件
stooge sort——O(n^2.7)很漂亮但是很耗時(shí)
2 傅立葉變換與快速傅立葉變換
3 Dijkstra 算法
4 RSA算法變換
5 安全哈希算法
6 整數(shù)因式分解
7 鏈接分析
8 比例積分微分算法
9 數(shù)據(jù)壓縮算法
10 隨機(jī)數(shù)生成
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

