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位數字,可以通過利用指標...