排序演算法空間、時間複雜度
簡單排序法——
冒泡法是第二維迴圈中自己迴圈,找最小或最大值
選擇排序和交換排序是第二維迴圈與第一維迴圈中的值比較;交換法最清晰,選擇法作了改進,
只交換位置標號,演算法複雜度沒變。
插入法,
它的基本工作原理是抽出牌,在前面的牌中尋找相應的位置插入,然後繼續下一張(較為複雜)
高階排序法——
快速排序,從冒泡法改進得到,基本思想是任選乙個記錄,一般選取序列第乙個,通過一趟排序將待排 記錄分割成相鄰的兩個區域,其中乙個區域中記錄的關鍵字比另乙個區域關鍵字都小,即乙個區域的值都大於所取的關鍵字,另乙個區域的指都小於所取的關鍵字, 則可以分別對這兩個區域的記錄進行排序,以達到整個序列有序。
將它區別於
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 以二倍的速度增長,也就是說到...
排序演算法空間 時間複雜度
排序演算法空間 時間複雜度 簡單排序法 冒泡法是第二維迴圈中自己迴圈,找最小或最大值 選擇排序和交換排序是第二維迴圈與第一維迴圈中的值比較 交換法最清晰,選擇法作了改進,只交換位置標號,演算法複雜度沒變。插入法,它的基本工作原理是抽出牌,在前面的牌中尋找相應的位置插入,然後繼續下一張 較為複雜 高階...
演算法時間複雜度空間複雜度
演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...