Java程式設計師必備 資料結構與演算法之快速排序(二)

2021-07-23 09:48:55 字數 666 閱讀 9165

public

void

change(object r,int low,int high)

r[low] = temp;

return low;

}public

void

quicksort(object r,int low,int high)

}

快速排序演算法的執行時間依賴於劃分是否平衡,根據基準數元素將序列劃分為兩個子串行中的元素個數,而劃分是否平衡還依賴於所使用的樞紐元素。

最壞情況:所得到的子串行中乙個子串行為空,相當於氣泡排序,每一次都有乙個元素在一邊,n-1的元素在另一邊,此時的時間複雜度為o(n的平方)。

最好情況:每次排序的基準數恰巧在中間,恰巧左側和右側的元素一樣多,此時的時間複雜度公式則為:t[n] = 2t[n/2] + f(n),t[n/2]為平分後的子陣列的時間複雜度,f[n] 為平分這個陣列時所花的時間,下面為最優情況下的時間複雜度分析:

參考自:在此表示感謝!!

快速排序演算法需要乙個堆疊來實現遞迴,若每次劃分都將序列均勻分隔為長度相近的兩個子串行,則堆疊的最大深度為log n,但是,最壞情況下,堆疊的最大深度則是n。

Java程式設計師必備 資料結構與演算法之快速排序(一)

關於快速排序演算法這個問題,也可以等價於乙個對分治演算法實現的典型例子,首先通過乙個基準數將一串未排序序列分成左右兩個序列s1和s2,其中s1的元素都比基準數小,s2的元素都比基準數大,然後再對左右兩個序列分別再次進行快速排序,對於s1 s2的基準數可以隨便尋找,並不一定每一次都把最低位設定為基準數...

高階程式設計師必備資料結構演算法之雜湊表

雜湊表有稱為雜湊表,是一種空間換結構的資料結構。為每個資料加入鍵元素,通過鍵進行檢索。雜湊表的組成 鍵 key 是自己新增的用於檢索的資料,一般為整型,也可以為其他型別 值 value 用於儲存資料的地方 索引 陣列的下標 雜湊桶 連線在雜湊表陣列上的陣列或鍊錶 雜湊函式 將鍵值對映到索引上 陣列下...

程式設計師資料結構筆記2

第二天 轉眼又過了一周了,前面一周裡面我編了一些程式 鍊錶,長整型數相加,三元組表轉置以及一些簡單的函式.其實有些演算法想想是很簡單,不過寫起來還是需要一定耐心和c基礎的,如果你自己覺得各演算法都很懂了,不妨開機編編試試.或許會有一些新的發現與體會.棧和佇列 1 知識點 棧的定義 操作受限的線性表 ...