本文主要是介绍随机选择算法:以平均复杂度O(n)获取乱序序列中第K大的元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
非递归写法和递归写法
#include <bits/stdc++.h>
using namespace std;int RandPartition(vector<int>& nums, int left, int right)
{int pos = round(rand() * 1.0 / RAND_MAX * (right - left) + left);std::swap(nums[pos], nums[left]);int tmp = nums[left];while (left < right) {while (left < right && nums[right] >= tmp) --right;std::swap(nums[right], nums[left]);while (left < right && nums[left] < tmp) ++left;std::swap
这篇关于随机选择算法:以平均复杂度O(n)获取乱序序列中第K大的元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!