使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。(考察高效率,解决产生冲突的问题)

news/2024/11/16 15:04:19/

【记录学习笔记,方便自己理解。 】

参考博客:https://blog.csdn.net/fanbih/article/details/54913787

以100为例,1000W时将value值更改即可,选取1-100范围方便时输出检验是否正确。

先构建一个value大小的数组,按下标存储1-value范围的值。

有了这样一个数组之后,用random.nextInt(value) 每次随机生成[0,value)范围的值,用count+value 作为下标交换count+value 和count位置的两个数,比如交换 list[0+5] 和list[0]。 下一次count++,交换某个位置和list[1],这样相当于随机选取某个位置的数,逐一放在数组的第0个位置、第1个位置。注意:count+value不能超过原本value的值,每次count++都要value--。

public static void main(String[] args) {
         Random random = new Random();
         long start = System.currentTimeMillis();

         int value = 100;
         //使用数组速度更快
         int[] list = new int[value];

         for (int j = 0; j < value; ++j) {
             list[j] = j+1;
         }

         int index = 0;
         int count = 0;
         int tmp = 0;
         while (value > 0) {
             index = random.nextInt(value);
             //System.out.println(list[count + index]);
             tmp = list[count + index];
             list[count + index] = list[count];
             list[count] = tmp;
             ++count;
             --value;
         }

         long end = System.currentTimeMillis();

         //----验证是否正确
         Arrays.sort(list);
         int i = 0, size = list.length;
         for (; i < size; ++i) {
             //System.out.println(list[i]);
             if (list[i] != (i + 1))
                 System.out.println(i + "error" + list[i]);
          }
         //----验证是否正确

         System.out.println("creat4------");
         System.out.println("执行耗时 : " + (end - start) / 1000f + " 秒 ");
         System.out.println("完了,集合大小为" + list.length);

    }
 


http://www.ppmy.cn/news/735688.html

相关文章

MySQL如何快速批量插入1000w条数据

听说有个面试题是: 如何快速向mysql中插入1000w条数据? 我私下试了一下, 发现插入10000条数据用了0.9s, 插入10w条数据用了4.7s, 插入100w条数据用了58s左右,1000w条数据,我的笔记本吭哧了5分钟,自己停了, 心中1000w只草泥马呼啸而过,我用的是下面的代码: -- 进入数据库 use…

使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。

使用随机算法产生一个数&#xff0c;要求把1-1000W之间这些数全部生成。&#xff08;考察高效率&#xff0c;解决产生冲突的问题&#xff09; 代码虽然实现了。 提高效率的地方有如下&#xff1a; 1.初始化set集合的时候 Sets.newHashSetWithExpectedSize(value)&#xff0c;…

1000W纯正弦波逆变器方案资料EG8010源代码KA3525原理图图纸PCB

1000W纯正弦波逆变器方案资料EG8010源代码KA3525原理图图纸PCB id657880186786&

MySQL快速生成 1000W 条测试数据

好记忆不如烂笔头&#xff0c;能记下点东西&#xff0c;就记下点&#xff0c;有时间拿出来看看&#xff0c;也会发觉不一样的感受. 目录 1、生成思路 2、创建普通表及内存表 3、创建函数 4.创建存储过程 5、调用存储过程 6、插入普通表中 1、生成思路 利用mysql内存表插…

mysql中导入1000W条数据,哪种方式比较快

前言 背景 今天被妹子问到一个问题&#xff0c;往mysql中导入1000W条数据&#xff0c;哪种方式比较快&#xff0c;我居然被问到了&#xff0c;说实话我还真心不知道。 那就找数据呗&#xff0c;搞数据研发的好处就是&#xff0c;数据肯定是很多的&#xff0c;正好还有测试集群…

MySQL批量插入1000w条数据

一、概述 在一些实际的测试、运维过程中&#xff0c;往往需要向数据库插入大量数据&#xff0c;利用存储过程是一个不错的选择 本次采用MySQL5.7&#xff0c;模拟实际批量插入1000w条随机数据 二、创建库 mysql -uroot -p密码create database bigdata;use bigdata三、创建表 …

MySQL线上环境单表1000w数据增加字段怎么玩

http://www.gameboys.cn/article/163 向一个 1000w 数据的线上业务表里新加字段&#xff0c;怎么操作&#xff1f; 本地测试及正确解决方案&#xff1a; 1.准备测试环境 MySQL 测试环境 系统&#xff1a;Linux centos 6.8 内存&#xff1a;2G 内存 CPU:2 核 CPU 硬盘&…

如何从数据库加载1000w数据

这篇文章主要讲解 如何从数据库加载1000w数据 加载大量数据 例子&#xff1a;将1000w的数据从数据库导入到redis中 在mysql中的实现方法&#xff1a;1、limit 分页 2、游标 limit 分页 问题&#xff1a; 当offset很大时&#xff0c;mysql需要做大量的文件排序操作&#x…