215 陣列中的第K個最大元素

2021-10-21 19:40:46 字數 2113 閱讀 5809

陣列中的第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

輸出: 4

說明:你可以假設 k 總是有效的,且 1 ≤ k ≤ 陣列的長度。

我的解題:

public

class

findkthlargest215

;int

n2 =

;int

n3 =

;int

n4 =

;int

n5 =

; system.out.

println

(findkthlargest

(n2,2)

);}//先排序再找

public

static

intfindkthlargest

(int

nums,

int k)

//直接插入排序

//思路:從位置1開始往後遍歷,每個值插入到前面的合適位置。對於比他大的值,往後移一位,否則就插入

//時間複雜度:o(n^2),空間複雜度:o(1)

public

static

void

insertsort

(int

nums)

//插入該值

nums[j +1]

= temp;}}

//氣泡排序

//思路:從前往後遍歷nums.length次,每次遍歷把前後兩個相鄰的數大小排序。這樣每一趟都會把剩餘陣列中最大的數排到最後面。直到有序。相當於冒泡泡

//優化:對於原本有序,或者還沒遍歷完nums.length次就已經有序了,不需要再遍歷了。所以每一次遍歷用flag記錄,如果沒有交換,說明有序,返回即可

//時間複雜度:o(n^2),空間複雜度:o(1)

public

static

void

bubblesort

(int

nums)}if

(!flag)

return;}

}//快速排序法

//思路:遞迴。取剩餘陣列第乙個值作為中樞,依次從後往前遍歷,如果不比他小,跳過,否則把值放到最前面取值的位置。

// 然後換成從前往後遍歷。同理。交換遍歷,最後指標相撞時結束。左右指標相等指向的位置把中樞值放到那裡。中樞值把陣列分成了左右兩節。分別呼叫本方法進行排序。

//遞迴結束條件:當傳入的左指標》=右指標時,結束遞迴。

//時間複雜度:o(nlog2n),空間複雜度:o(log2n)

public

static

void

quicksort

(int

nums,

int left,

int right)

}else}}

//最後當左右指標相等時,指向的位置就是中樞值的位置

nums[left]

= temp;

//中樞值將陣列分為左右兩部分。遞迴呼叫本方法

quicksort

(nums, cp_left, left -1)

;quicksort

(nums, right +

1, cp_right);}

//選擇排序法

//思想:遍歷陣列nums.length-2次,每次找到最小的元素,和剩餘陣列的值交換。剩餘陣列為陣列前面排好序後面部分.

//優點是思路簡單,**簡單。

//時間複雜度:o(n^2),空間複雜度:o(1)

public

static

void

selectsort

(int

nums)

}//交換

nums[minindex]

= nums[i]

; nums[i]

= minval;}}

}

215 陣列中的第K個最大元素

題目 方法一 二 時間複雜度 o n logk 向大小為k的堆中新增元素的時間複雜度為o logk 我們將重複該操作n次 空間複雜度 o k 用於儲存k個堆元素 自己解答 速度太慢?有待提高 time 2019 10 9 下午01 04 file 陣列中第k大元素 215.py 在未排序的陣列中找到...

215 陣列中的第K個最大元素

思路1 快排 考慮先使用快排實現,練習快排。時間複雜度o n 如果我們把每次分割槽遍歷的元素個數加起來,就是 n n 2 n 4 n 8 1。這是乙個等比數列求和,最後的和等於 2n 1。所以,時間複雜度就為 o n 因為一次快排可以實現乙個數歸位,比較index和n k的大小 如果index n ...

215 陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。輸入 3,2,1,5,6,4 和 k 2 輸出 5 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 你可以假設 k 總是有效的,且 1 k 陣列的長度。思路和演...