排序演算法空間 時間複雜度

2021-04-19 10:45:22 字數 1270 閱讀 1076

排序演算法空間、時間複雜度

簡單排序法——

冒泡法是第二維迴圈中自己迴圈,找最小或最大值

選擇排序和交換排序是第二維迴圈與第一維迴圈中的值比較;交換法最清晰,選擇法作了改進,

只交換位置標號,演算法複雜度沒變。

插入法,

它的基本工作原理是抽出牌,在前面的牌中尋找相應的位置插入,然後繼續下一張(較為複雜)

高階排序法——

快速排序,從冒泡法改進得到,基本思想是任選乙個記錄,一般選取序列第乙個,通過一趟排序將待排 記錄分割成相鄰的兩個區域,其中乙個區域中記錄的關鍵字比另乙個區域關鍵字都小,即乙個區域的值都大於所取的關鍵字,另乙個區域的指都小於所取的關鍵字, 則可以分別對這兩個區域的記錄進行排序,以達到整個序列有序。

將它區別於

shell排序,後者是先有乙個

遞減的步長陣列,對相隔step-1的內容排列,然後改變步長,依次

下去。

歸併排序

,先在原記錄中找乙個中間位置(low+high)/2,對兩段分別進行歸併排序,最後再整體排序(即分三次)。

注意,快速排序沒有最後整體排序,但一開始先排了一次。 

堆排序,對選擇排序的改進,利用堆的特性對記錄序列進行排序。

時間複雜度

氣泡排序、選擇排序和插入排序的比較次數為o(n2),最壞情況

o(n2),最好

o(n)

(但選擇排序最好是 o

(n2))

快速排序在

平均情況下

複雜性為o(nlogn),最壞情況

o(n2),最好

o(nlogn)

堆排序和合併排序在

最壞情況下複雜性為o(nlogn)。可見,合併排序和堆排序是比較排序演算法中時間複雜度最優演算法。

空間複雜度

空間效能是排序所需輔助空間大小

所有簡單排序和堆排序都是0(1)

快速排序為0(logn),要為遞迴程式執行過程棧所需的輔助空間

歸併排序和基數排序所需輔助空間最多,為o(n)

看個小**

#include

main()

一、n=m&(-1);中n恒等m

p=m&&(-2);中p恒等1;(改稱0則p為0)了

-1的二進位制為11;

二、遮蔽的兩句使用時,應該

輸入 m=1n=2p=3

不能 1 2 3

排序演算法 時間複雜度和空間複雜度

常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...

排序演算法空間 時間複雜度

排序演算法空間 時間複雜度 簡單排序法 冒泡法是第二維迴圈中自己迴圈,找最小或最大值 選擇排序和交換排序是第二維迴圈與第一維迴圈中的值比較 交換法最清晰,選擇法作了改進,只交換位置標號,演算法複雜度沒變。插入法,它的基本工作原理是抽出牌,在前面的牌中尋找相應的位置插入,然後繼續下一張 較為複雜 高階...

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...