随机伪快排法 求第k大数

2024-04-01 17:58
文章标签 大数 随机 排法 伪快

本文主要是介绍随机伪快排法 求第k大数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分治法求第K大数

利用快排的思想求一个数列的第k大数, 高二开始写快排,但是一直没有非常清晰的理解,知道是分治, 但不理解细节。 今天借助写这个的机会,同时阅读了《编程珠玑》里的四种快排写法,才感觉更加清晰了。 这次写的快排才真正有了一个数,其左边的数都比他小, 右边的都比他大。


/************************************************************************/
/* 随机化伪快排求第k大数                                                    */
/************************************************************************/#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;#define maxn 10100int num[maxn];int Qsort(int l, int r, int key){int mid, ll = l, rr = r + 1;mid = rand() % (r - l + 1) + l;swap(num[l], num[mid]);while(ll <= rr){do { ll ++; } while( ll <= r && num[ll] < num[l] );do { rr --; } while( num[rr] > num[l] );if(ll < rr){swap(num[ll], num[rr]);}}swap(num[l], num[rr]);if(rr - l + 1 >= key){if(rr - l + 1 == key) return num[rr];return Qsort(l, rr, key);}else{return Qsort(rr + 1, r, key - (rr - l + 1));}
}int main(){int n;while(~scanf("%d", &n)){for(int i = 0; i < n; ++ i){scanf("%d", &num[i]);}int ans = Qsort(0, n - 1, n / 2 + 1);printf("%d\n", ans);}return 0;
}


这篇关于随机伪快排法 求第k大数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867788

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

HDD 顺序和随机文件拷贝和存储优化策略

对于机械硬盘(HDD),顺序拷贝和随机拷贝涉及到磁头的移动方式和数据的读取/写入模式。理解这些概念对于优化硬盘性能和管理文件操作非常重要。 1. 顺序拷贝 定义: 顺序拷贝指的是数据从硬盘的一个位置到另一个位置按顺序连续读取和写入。这意味着数据在硬盘上的位置是线性的,没有跳跃或回溯。 特点: 磁头移动最小化:由于数据是连续的,磁头在读取或写入数据时只需要在磁盘的一个方向上移动,减少了寻道时

找第K大数(ACdream 1099)

瑶瑶的第K大 Time Limit: 4000/2000MS (Java/Others)  Memory Limit: 256000/128000KB (Java/Others) Submit  Statistic  Next Problem Problem Description 一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。

算法:将数组随机打乱顺序,生成一个新的数组

一、思路 核心:缩小原数组的可随机取数范围 1、创建一个与原数组长度相同的新数组; 2、从原数组的有效的可取数范围 (不断缩小) 中随机取出一个数据,添加进新的数组; 3、将取出的随机数与原数组的最后一个数据进行置换; 4、重复步骤2和3。 二、代码 public class ArrayRandomTest {//将数组随机打乱顺序,生成一个新的数组public static int

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒的风格,我很高兴能与大家分享,这样可以节省大家的时间,不用自己动手测试。在本文中,我将展示十个M