查找无序数组中第K大的数
生活随笔
收集整理的這篇文章主要介紹了
查找无序数组中第K大的数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
思路:
利用快速排序的劃分思想 可以找出前k大數(shù),然后不斷劃分 直到找到第K大元素
代碼:
#include <iostream> #include <algorithm> #include <cstdio>5 using namespace std; int findK(int left, int right, int arr[], int k) {if(left >= right) return arr[left];int first = left, last = right;int key = arr[first];while(first < last) {while(first < last && arr[last] >= key) last--;arr[first] = arr[last];while(first < last && arr[first] <= key) first++;arr[last] = arr[first];}arr[first] = key;if(first == k) return arr[k];else {if(first > k) return findK(left, first, arr, k);else return findK(first+1, right, arr, k);} } int main() {int n;int arr[1000];scanf("%d", &n);for(int i = 1; i <= n; i++) cin >>arr[i];int k;cin >> k;int num = findK(1, n, arr, k);cout << num << endl;return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/GHzz/p/9634210.html
總結(jié)
以上是生活随笔為你收集整理的查找无序数组中第K大的数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抵开头的成语有哪些?
- 下一篇: 二冲程摩托车多久或多少公里需要换一次机油