快速排序方法的時間複雜度為O n 2 n n 1 2中O 是什麼意思

2021-03-21 16:15:05 字數 4167 閱讀 5051

1樓:匿名使用者

o(1): 表示演算法

的執行時間為常量

o(n): 表示該演算法是線性演算法

o(㏒2n): 二分查詢演算法

o(n2): 對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。

o(n3): 做兩個n階矩陣的乘法運算

o(2n): 求具有n個元素集合的所有子集的演算法o(n!):

求具有n個元素的全排列的演算法o(n²)表示當n很大的時候,複雜度約等於**²,c是某個常數,簡單說就是當n足夠大的時候,n的線性增長,複雜度將沿平方增長。

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。

乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n))

為演算法的漸進時間複雜度,簡稱時間複雜度。

2樓:匿名使用者

1)對於你的問題簡單解釋如下:

理論計算機研究中,衡量演算法一般從兩個方面分析:時間複雜度和空間複雜度。空間複雜度跟時間複雜度是類似的,下面簡單解釋一下時間複雜度:

對於乙個資料規模為n的問題,解決該問題的演算法所用時間可以用含有n的函式t(n)來表示。對於絕大多數情況,我們只需要了解演算法的一般效能而不考慮細節,也就是說,我們只關心函式t(n)的表示式的形式,而不關心表示式的常數係數等與資料規模沒有關係的量值。對於函式t(n),我們又進一步將它簡化為o(n),即只考慮演算法平均執行時間的「瓶頸」,也就是t(n)表示式中,關於變數n增長最快的哪一項。

比如下面的**:

for(int i=1; i<=n*2; i++)for(int j=1; j<=n; j++)// do something here

那麼這個演算法的時間複雜度就是o(n^2),因為它有兩層迴圈,每層迴圈的資料規模都是n。注意第一層迴圈(外迴圈)要迭代n*2次,則實際上t(n)=2*n*n,而對於o(n)來說,我們忽略了常數2,只保留了n^2。這就是大o記法的乙個概括,並不精確。

對於時間複雜度的更精確、深入的解釋,可以自己查閱《演算法導論》第一章。

2)更正你的問題:快速排序演算法的時間複雜度應該為o(n lg n)。注意三種時間複雜度符號表示的不同意義!

英文本母o代表的是平均執行時間,因此對於快速排序來說應該是o(n lg n)。而使用下界函式omega或者上界函式theta則分別表示演算法執行的最快和最慢時間。對於未使用隨機化的快速排序,理論上可以證明,存在某一方法構造出一組資料使快速排序「退化」成平方複雜度演算法即theta(n^2)。

但是對於其o(n)表示法應該為o(n^2)。

快速排序方法的時間複雜度為o(n^2)=n(n-1)/2.

3樓:匿名使用者

1)對於你的問題簡單解釋如下:

理論計算機研究中,衡量演算法一般從兩個方面分析:時間複雜度和空間複雜度。空間複雜度跟時間複雜度是類似的,下面簡單解釋一下時間複雜度:

對於乙個資料規模為n的問題,解決該問題的演算法所用時間可以用含有n的函式t(n)來表示。對於絕大多數情況,我們只需要了解演算法的一般效能而不考慮細節,也就是說,我們只關心函式t(n)的表示式的形式,而不關心表示式的常數係數等與資料規模沒有關係的量值。對於函式t(n),我們又進一步將它簡化為o(n),即只考慮演算法平均執行時間的「瓶頸」,也就是t(n)表示式中,關於變數n增長最快的哪一項。

比如下面的**:

for(int i=1; i<=n*2; i++)for(int j=1; j<=n; j++)// do something here

那麼這個演算法的時間複雜度就是o(n^2),因為它有兩層迴圈,每層迴圈的資料規模都是n。注意第一層迴圈(外迴圈)要迭代n*2次,則實際上t(n)=2*n*n,而對於o(n)來說,我們忽略了常數2,只保留了n^2。這就是大o記法的乙個概括,並不精確。

對於時間複雜度的更精確、深入的解釋,可以自己查閱《演算法導論》第一章。

2)更正你的問題:快速排序演算法的時間複雜度應該為o(n lg n)。注意三種時間複雜度符號表示的不同意義!

英文本母o代表的是平均執行時間,因此對於快速排序來說應該是o(n lg n)。而使用下界函式omega或者上界函式theta則分別表示演算法執行的最快和最慢時間。對於未使用隨機化的快速排序,理論上可以證明,存在某一方法構造出一組資料使快速排序「退化」成平方複雜度演算法即theta(n^2)。

但是對於其o(n)表示法應該為o(n^2)。

4樓:匿名使用者

n 趨於無窮大時無窮大的階數。

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。

電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。

使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。

電腦程式設計中快速排序的時間複雜度n log n 是n*log(n)還是什麼

5樓:匿名使用者

問題中兩者選擇的答案是相同的,且是正確的,n log n 即等於n*log(n),其中*代表乘,預設底數為

2.快速排序的複雜度為log以2為底,n^2的對數,也就是o(n^2),如排序10個數,最壞的情況就是o(10^2)=o(100)≈33

6樓:

快速排序的平均複雜度是在n*log2(n)也就是nlog(n),在資訊學中nlog(n)的底數預設為2。至於說快速排序10個數的時間複雜度,是沒辦法計算的,這個還是和這10個數的初始順序有關。只能說排序10個數的平均複雜度在10*log2(10),如果這個10個序列差勁,複雜度也有可能是o(10^2)。

(快速排序的最壞情況下的時間複雜度是o(n^2))

7樓:匿名使用者

複雜度的表示式裡面只看冪級不看具體底數,log n跟log2n是一回事,感覺你有些概念不清的樣子,時間複雜度的n就表示演算法處理的數字個數,快速排序的時間複雜度就是n log n,快速排序10個數的時間複雜度也還是n log n,你可以說n=10,但是時間複雜度的表示式裡面要求把具體的輸入個數用n表示,因為這樣才能反映出演算法在輸入個數增加的時候執行時間相應增加的程度,也就是「時間複雜度」這個概念本身想說明的問題。

8樓:謙謙知臨

資料結構中logn一般表示2為底數,如果不是的話,才會明確標明。

對於輸入為n個數進行快速排序演算法的平均時間複雜度是 o(nlog2n) 請講的通俗易懂些 捷徑

9樓:百度使用者

這不是平均吧,是最優吧。

先要知道大寫o和小寫o,極限什麼的。

快速排序,希爾排序和堆排序的平均時間複雜度都是o(nlog2n),為什麼說快速排序是最快的?

10樓:匿名使用者

快速排序是用遞迴的思想,用棧來儲存資料,它第n趟最多要確定2^n個數的最終位置。它使用的空間是最多的,用空間換取了時間。例如:

11樓:匿名使用者

快排只是內排序演算法啊,而且在內排序中也並不是最快的,只是快排在大多數情況下效果很好,因為一般的無序元素不會是完全或者近似倒序的。

12樓:下個倒角

每種排序都有它的優勢。

對於那個排序技術中的快速排序法,在最壞的情況下是o(nlog2n),這個o是什麼,還有能解釋一下這個資料是

13樓:風箏

o是表示bai最大近似的意思(

du個人理解),書上嚴格zhi定義我忘了,dao假如說時間複雜度是o(n)的話,專一般屬

情況下語句塊的執行次數就是n。

快排在有序情況下複雜度退化到o(n~2),因為快排每次都是選定乙個軸值,把資料按軸值分成兩部分,這個軸值一般取第乙個資料,當有序情況下,每次需要排序的資料都在軸值的一邊,總共要拍n次

快速排序,希爾排序和堆排序的平均時間複雜度都是O nlog2n ,為什麼說快速排序是最快的

快速排序是用遞迴的思想,用棧來儲存資料,它第n趟最多要確定2 n個數的最終位置。它使用的空間是最多的,用空間換取了時間。例如 快排只是內排序演算法啊,而且在內排序中也並不是最快的,只是快排在大多數情況下效果很好,因為一般的無序元素不會是完全或者近似倒序的。每種排序都有它的優勢。為什麼快速排序比堆排序...

演算法的時間複雜度是指空間複雜度是指

時間複雜度指的是隨著資料規模的增大時間的增率,比如資料量為n,花的時間為n 2,複雜度就是n 2,同理空間複雜度指的是記憶體的開銷。最次的情況就是階乘級別的複雜度,這種演算法是不能用的。演算法的空間複雜度指的是什麼?空間複雜度 space plexity 是對乙個演算法在執行過程中臨時占用儲存空間大...

每種查詢方法的時間複雜度, 查詢技術 順序查詢的時間複雜度O n ,請問O n 什麼意思啊?

直接查詢複雜度 o n 二分查詢複雜度 o log2 n 分塊 索引 查詢複雜度在直接查詢複雜度與二分查詢複雜度之間雜湊查詢複查度與資料規模無關,只與查詢因子 雜湊函式的選取 衝突處理方式相關。怎樣計算查詢各種表的某個結點的時間複雜度?o n 又是什麼意思啊啊?為了找到第i個結點,鍊錶中需要從頭結點...