算法表示法之大O表示法
目錄
- 前言
- 介紹
- 時間復雜度
- O(1)
- O(n)
- O(log n)
- O(n2)
- O(n * log n)
- O(n!)
前言
我們在描述算法復雜度時,常用o(1), o(n), o(logn), o(n logn)等表示對應算法的時間復雜度,是算法的時空復雜度的表示。不僅僅用于表示時間復雜度,也用于表示空間復雜度。這種表示法稱之為大O表示法
介紹
大O表示法是算法的一種特殊的表示法,指出了算法的速度有多快,它指出了算法運行時間的增速。需要注意的是大O表示法指的并非以秒為單位的速度
主要可以用來表示時間復雜度和空間復雜度
簡單的說大O表示法僅僅只是定義當數量越多時算法運行時間的增速,增速越慢,即代表算法越快
時間復雜度
O(1)
O(1):是最低的時間復雜度,表示算法的速度和數量無關,不論數量是多少,算法的速度始終不變,也就是耗時/耗空間與輸入數據大小無關,無論輸入數據增大多少倍,耗時/耗空間都不變。 哈希算法就是典型的O(1)時間復雜度,無論數據規模多大,都可以在一次計算后找到目標(不考慮沖突的話)
O(n)
O(n):也叫線性時間,表示算法的速度和數量增加呈現線性增長。
典型算法有:簡單查找。
即在n個數中輪詢查找a所處的位置,當n的數量+1時算法查找的次數也+1
代碼案例
O(log n)
O(log n):也叫對數時間
典型算法有:二分查找法
即當數量每擴大兩倍,查詢次數僅僅需要+1次,是一種隨著數量越多,算法耗時增速越慢的算法
代碼案例
O(n2)
O(n2):
典型算法有:選擇排序、冒泡排序,是一種速度較慢的排序法
代碼案例
O(n * log n)
典型算法有:快速排序法,是一種速度較快的排序法
代碼案例
O(n!)
是一種非常慢的算法
即當數量為n時,查詢算法耗時為a時,當數量+1時查詢算法將耗時a*(n+1),當數量較多時耗時將變得非常大
總結
以上是生活随笔為你收集整理的算法表示法之大O表示法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins流水线打包微服务构建doc
- 下一篇: java从接口直接下载文件到本地