隨機選取基準法

2021-08-20 02:33:54 字數 1028 閱讀 5844

基本的快速排序選取第乙個或者最後乙個元素作為基準。這樣在陣列已經有序的情況下,每次劃分將得到最壞的結果。一種比較常見的優化方法是隨機化演算法,即隨機選取乙個元素作為基準。這種情況下雖然最壞情況仍然是o(n^2),但最壞情況不再依賴於輸入資料,而是由於隨機函式取值不佳。實際上,隨機化快速排序得到理論最壞情況的可能性僅為1/(2^n)。所以隨機化快速排序可以對於絕大多數輸入資料達到o(nlogn)的期望時間複雜度。

public

class

test1

/*** 找基準

*@param array

*@param low

*@param high

*@return

*/public

static

intpartion(int array,int low,int high)

if(low >= high)else

//從low位置尋找比tmp大的值

while(low < high && array[low] <= tmp)

if(low >= high)else

}array[low] = tmp;

return low;

}public

static

void

quick(int array,int start,int end)

//對基準右邊進行排序

資料結構 排序 快速排序之隨機選取基準法

思想 基本的快速排序選取第乙個或者最後乙個元素作為基準。這樣在陣列已經有序的情況下,每次劃分將得到最壞的結果。一種比較常見的優化方法是隨機化演算法,即隨機選取乙個元素作為基準。這種情況下雖然最壞情況仍然是o n2 但最壞情況不再依賴於輸入資料,而是由於隨機函式取值不佳。實際上,隨機化快速排序得到理論...

MySQL隨機選取資料

本文實現了mysql的隨機數 mysq隨機選取資料 mysq隨機查詢資料 mysq隨機更新資料。mysq隨機查詢資料 以前在群裡討論過這個問題,比較的有意思.mysql的語法真好玩.他們原來都想用php的實現隨機,但取出多條好像要進行兩次以上查詢.翻了手冊,找到了下面這個語句,可以完成任務了。sel...

按概率隨機選取

據我了解,random.choice seq 是等概率選取乙個,不是我想要的。而numpy.random.choice seq,p,k 是按概率隨機重複選取多個,這正是我想要的。但是,我不想為這麼乙個函式引入巨大的numpy庫,所以打算自己實現乙個按概率隨機選取的函式。特此將 記錄如下 import...