程式設計之美2 5 尋找最大的K個數

2021-09-06 13:23:04 字數 860 閱讀 8187

程式設計之美2.5:尋找最大的k個數

引申:尋找第k大的數:

方法一:

//

選擇第k大的數(通過改進快速排序來實現)

public

static

void selectshort(int array, int low, int high, int k, out

intvalue)

if (low array[high] =array[low];

high--;}}

array[low] =tempitem;

if (low == array.length -k)

else

if (low < array.length -k) //

第k個元素在右分支中

}else

//(low > k-1)第k個元素在左分支中

}

}

方法二:

借助程式設計之美的思想,求前k個最大的數,其中最小的就是。

//

建立最大堆

public

static

void createstack(int array, int startindex, int

lastindex)

if (array[leftleafindex] >array[root])

else}}

}//堆排序

public

static

void stacksort(int

arrary)

}

《程式設計之美》2 5尋找最大的K個數

問題 有很多個無序的數 假設為n個 怎麼選出其中最大的k個數?kay s word kay的理解 很多 好多好多,無法儲存,因此首先排除了對輸入數排序的解法,而採用小容量陣列整理大的輸入資料,即 開大小為k的陣列,通過遍歷n個輸入陣列,每遍歷乙個數num,檢查k陣列的最小數,如果比num小,則用nu...

程式設計之美2 5 尋找最大的K個數

問題 從一組數中選出其中最大的k個數,當這組數的個數為幾百 幾百萬 幾百億時分別適合採用哪些演算法?個數為幾百時,使用順序統計法 看演算法導論第9章 演算法思想是對輸入陣列進行遞迴劃分,一邊的資料小於選定數,另一邊的資料大於等於選定數。但和快速排序不同的是,快速排序會遞迴處理劃分的兩邊,而順序統計法...

程式設計之美 2 5 尋找最大的K個數

今天看演算法分析是,看到乙個這樣的問題,就是在一堆資料中查詢到第k個大的值。名稱是 設計一組n個數,確定其中第k個最大值,這是乙個選擇問題,當然,解決這個問題的方法很多,本人在網上搜尋了一番,查詢到以下的方式,決定很好,推薦給大家。所謂 第 前 k大數問題 指的是在長度為n n k 的亂序陣列中s找...