基於快排求無序陣列的第K大元素

2021-10-06 13:49:14 字數 1028 閱讀 5166

package other_pratice

/*** 怎麼最快的求無序陣列的第k大元素。

** author:sxy

*/// 我們知道快排的排序是從大到小,還是從小到大取決於分割槽那個函式是如何寫的,本題是在陣列中尋找第幾大元素

// 所以需要在陣列的大小的順序要是從大到小

// 快速排序每次排序完找的 基準點即是第幾大元素。

// 如果 如果count==基準點+1;則基準點即是第幾大元素; 如果count《基準點+1,在左邊找; 如果count>基準點+1大於在右邊找。

func findnmaxindex(arr int, count int) int

func findnmaxindex(arr int, count, start, end int) int else if pivot+1 > count else

}// 如此排序的是陣列的的資料是從大到小的。

func partition(arr int, start, end int) int

i++} }

arr[i], arr[end] = arr[end], arr[i]

return i

}

測試

package other_pratice

import (

"fmt"

"testing"

)func testfindnmaxindex(t *testing.t)

arr1:=int

res:=findnmaxindex(arr1,3)

fmt.println(res)

}

output: 第3k大元素

=== run   testfindnmaxindex

4--- pass: testfindnmaxindex (0.00s)

pass

process finished with exit code 0

如何在N個無序陣列元素中,查詢第K大元素

package com.lee.sort public class heapsort system.out.println 排序前.for int i 1 i array.length i system.out.println heap size array.length heapsort arra...

選擇第K大元素(快排 快選以及k 選取比較)

先看執行結果 按照書中所給的快排 快選以及k 選取演算法分別寫出函式檢測執行結果以及時間 發現不出所料的直接快排演算法會慢很多,但預想更穩定的k 選取演算法的耗時比預期設想要大,而相對不太穩定的快選演算法卻是三者之中最快的,為了避免偶然性,又重複做了多組實驗,並將n的範圍擴大到100 1000000...

快排思想之陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4class solution object ...