算法-两个含label队列组成pair,随机抽取

问题描述

两个含label队列组成pair,随机抽取

我有一个序列,该序列的元素个数 N 在(0,65535]之间,每一个元素(可以认为是一个unsigned short)都有一个标签label(存在多个元素对应一个label的情况),现在我需要将不同label的元素组成一个pair,随机抽取一些pair,抽取的pair个数 T 不会超过200000000个。需要的效果是相当于:先将元素进行一对一的对比,需要对比 N(N-1) 中情况,将所有比对过程中label不相同的组成pair序列,然后在该pair序列中随机挑选 T 个,组成我们需要的队列。
问题是:我们在组成pair序列时需要的内存过大,而且效率不高。
注意:随机要充分,内存可用最大为1G左右

时间: 2024-11-03 21:39:36

算法-两个含label队列组成pair,随机抽取的相关文章

网上考试系统编制中的随机抽取试题的四种算法

算法|随机 因为教学的需要,我决定编写一个asp+ms sql2000的网上考试系统,其功能主要为:实现判断题.单项多项选择题和填空题的在线自动答题.改卷:并将学生的错误答案记入数据库,供教师分析.在编写从题库中随机抽取试题这一模块的算法上,却颇费了一番周折,现将解决过程记录如下,以供大家参考. 为了便于说明问题,文中提供的代码中的变量pd为从题库中要抽取出来考试的试题数量,数据库表名与字段名我都使用了中文,并仅以判断题为例. 算法一 由于不知道如何实现从题库中随机抽取试题的sql语句,我在网上

[剑指Offer]9.用两个栈实现队列

题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 用栈来模拟队列.我们首先插入一个元素a到stack1中,再压入两个元素bc,此时栈中有元素abc,其中c位于栈顶,而stack2仍然为空.我们试着删除一个元素.按照队列先进先出的原则,我们应该先删除元素a.元素a存放在stack1中且不在栈顶,因此不能直接删除.注意到stack2还未使用,我们把stack1中的元素逐个弹出并压入stack2中,stack2中的元素是cba,栈顶元素是a,我们现在可以

剑指offer系列之五:用两个栈实现队列

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 栈的特点是先进后出,而队列的特点是先进先出.题目中提到使用两个栈实现队列,好像有戏.现在问题是如何把栈的出栈和入栈与队列的入队和出队联系起来?因为现在只有栈,所以在实现的队列中,只能先往栈中添加元素,这点比较好理解:那么出队呢,由于先进去的元素被压在栈底,而如果是队列的话,必须是栈底的那个元素先出队.现在可以使用第二个栈,思路是把原先第一个栈中的元素出栈,并压入第二个栈中,观察第二个栈,就可以发现:在

java 用两个栈实现队列!

问题描述 java 用两个栈实现队列! 看到一个题,是说用栈实现队列的效果,我想的是用两个栈,栈1输出到栈2,再输出,大家帮我看一下,这个程序的最后输出怎么是[b,1],输入的3哪去了? import java.util.Enumeration; import java.util.Stack; public class mockFIFO { public static void main(String[] args) { // TODO Auto-generated method stub St

大陆再检出两款含塑台湾食品童装也将检塑化剂

新国标将增加检测6种增塑剂(塑化剂) 禁用5种阻燃剂 本报讯 (记者 何颖思 通讯员 岳志轩) 昨日,记者在儿童及婴幼儿服装产品质量分析会上了解到,新国标<婴幼儿及儿童纺织产品安全技术规范>正在报批过程中,其中新增要求检测6种增塑剂(塑化剂),同时要求禁用5种阻燃剂. "六一"前抽查合格率75% "六一"儿童节前夕,广东省质监局抽查了广州.深圳.佛山等7市共97家企业生产的儿童及婴幼儿服装产品共100批次,经检验,合格72批次,产品抽样批次合格率为72%

php中通过数组进行高效随机抽取指定条记录的算法_php技巧

php使用数组array_rand()函数进行高效随机抽取指定条数的记录,可以随机抽取数据库中的记录,适合进行随机展示和抽奖程序. 该算法主要是利用php的array_rand()函数,下面看一下array_rand()函数的主要功能: array_rand-从数组中随机取出一个或多个单元 mixed array_rand(array $input[,int $num_req] ) array_rand()在你想从数组中取出一个或多个随机的单元时相当有用.它接受input作为输入数组和一个可选的

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

算法速成(九)队列

可能大家都知道,线性表的变种非常非常多,比如今天讲的"队列",灰常有意思啊. 一:概念 队列是一个"先进先出"的线性表,牛X的名字就是"First in First Out(FIFO)", 生活中有很多这样的场景,比如读书的时候去食堂打饭时的"排队".当然我们拒绝插队. 二:存储结构   前几天也说过,线性表有两种"存储结构",① 顺序存储,②链式存储.当然"队列"也脱离 不了这两种服务

Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

/* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其他点(被更新的节点可以在队列中 ,也可以是非队列中的节点)的距离 . ////如果v节点的到更新,则直接放入队列中(pair<d[v], v>)不会重复放入到队列中 如果某个节点从队列中出来的时候,如果cur.first != dist[cur.second] 就是 cur.second这个节点一