排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性
氣泡排序 o(n^2) o(n) o(n^2) o(1) 穩定
選擇排序 o(n^2) o(n^2) o(n^2) o(1) 不穩定
插入排序 o(n^2) o(n) o(n^2) o(1) 穩定
希爾排序o(n*log(n))~o(n^2) o(n^1.3) o(n^2) o(1) 不穩定
堆排序 o(n*log(n)) o(n*log(n)) o(n*log(n)) o(1) 不穩定
歸併排序 o(n*log(n)) o(n*log(n)) o(n*log(n)) o(n) 穩定
快速排序 o(n*log(n)) o(n*log(n)) o(n^2) o(1) 不穩定
氣泡排序經過優化以後,最好時間複雜度可以達到o(n)。設定乙個標誌位,如果有一趟比較中沒有發生任何交換,可提前結束,因此在正序情況下,時間複雜度為o(n)。
選擇排序在最壞和最好情況下,都必須在剩餘的序列中選擇最小(大)的數,與已排好序的序列後乙個位置元素做交換,依次最好和最壞時間複雜度均為o(n^2)。
插入排序是在把已排好序的序列的後乙個元素插入到前面已排好序(需要選擇合適的位置)的序列中,在正序情況下時間複雜度為o(n)。
堆是完全二叉樹,因此樹的深度一定是log(n)+1,最好和最壞時間複雜度均為o(n*log(n))。
歸併排序是將大陣列分為兩個小陣列,依次遞迴,相當於二叉樹,深度為log(n)+1,因此最好和最壞時間複雜度都是o(n*log(n))。
快速排序在正序或逆序情況下,每次劃分只得到比上一次劃分少乙個記錄的子串行,用遞迴樹畫出來,是一棵斜樹,此時需要n-1次遞迴,且第i次劃分要經過n-i次關鍵字比較才能找到第i個記錄,因此時間複雜度是\sum_^(n-i)=n(n-1)/2,即o(n^2)。
查詢複雜度:
各種排序和查詢複雜度
排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性 氣泡排序 o n 2 o n o n 2 o 1 穩定 選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 插入排序 o n 2 o n o n 2 o 1 穩定 希爾排序o n log n o n 2 o n 1.3 o n 2 ...
各種查詢 排序的時間複雜度
各種查詢 排序的時間複雜度 1 氣泡排序 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。2 選擇排序 選擇排序是給每個位置選擇當前元素最小的,比如給第乙個位置選擇最小的。例子...
各種查詢和排序的定義及時間複雜度
氣泡排序是穩定的,演算法時間複雜度是o n 2 2.2 選擇排序 selection sort 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。選擇排序是不穩定的,演算法複雜度是o...