每日一題 尋找第K大值的位置

2021-09-29 16:31:43 字數 1234 閱讀 7545

title: 每日一題–尋找第k大值的位置

date: 2019-11-16 12:33:12

tags:

97.尋找第k大值 (15分)

c時間限制:3000 毫秒 | c記憶體限制:3000 kb

題目內容:

在乙個整數陣列中,尋找第k大值所在位置。假設每個數值都不一樣。要求演算法時間複雜性通常情況下為線性。

輸入描述

包括乙個陣列長度n,乙個k, 以及緊接著的n個整數值。整數之間用空格隔開。

輸出描述

第k大值所在位置編號。規定陣列的第乙個位置編號為0.

輸入樣例

7 31 4 3 9 8 7 2

輸出樣例

5

#include

int m, k, a[

101]

, b[

101];/*

m: 記錄陣列元素個數

k: 本題主角

a: 排序陣列

b: 原始陣列

tmp: 定義快排的起點,用作中間位置

*/int

fun02

(int low,

int high)

a[low]

= a[high]

;//從左邊找乙個小大的,同時放在後面拿出了小的的位置

while

(low < high && tmp >= a[low]

) a[high]

= a[low];}

a[low]

= tmp;

return low;

}void

fun01

(int low,

int high)

}int

main()

//將原始陣列記錄好

for(

int i =

0; i < m; i++

)fun01(0

, m -1)

;for

(int i =

0; i < m; i++)}

return0;

}

思維強的不會,那我們就來個簡單點的,先排序,然後寫答案。

但是我們不能使用簡單的排序,我們要使用時間複雜度較低的,因此我們在這裡選擇快速排序,然後直接得出答案。

程式設計題 尋找第K大

內容會持續更新,有錯誤的地方歡迎指正,謝謝 有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。輸入例子 1,3,5,2,2 5,3 輸出例子 2 比這套卷子前面兩道題簡單多了!送分題,知道快...

每日一題 搜尋插入位置

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...

leetCode每日一題 尋找中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。分析 單看題目尋找中位數而言,可以簡化為尋找兩個數列中的第n位數字,可以通過利用指標...