美文网首页
使用qsrand将特定的数组列表随机排列C++

使用qsrand将特定的数组列表随机排列C++

作者: 田陌允 | 来源:发表于2021-06-18 14:02 被阅读0次

简单的一个小数组做打乱顺序的操作,因为太小,感觉也没必要进行二分优化了

static void randomArray(int array[], int length)//数组元素的乱序排列
{
    for(int i=0; i< length; i++)
    {
       QTime t;
       t= QTime::currentTime();
       qsrand(t.msec()+t.second()*1000);
       int r = i + qrand()%(length-i);
       int temp=array[i];
       array[i] = array[r];
       array[r] = temp;
    }
}

使用示例:

int array[4] = {1, 2, 3, 4};
qDebug()<<"before "<<array[0]<<array[1]<<array[2]<<array[3];
randomArray(array, 4);
qDebug()<<"after "<<array[0]<<array[1]<<array[2]<<array[3];

思路很简单,用QTime::currentTime()和qsrand函数生成随机种子,再由qrand()函数生成随机数,与数组size取余得到数组索引偏移值,最后对整个循环交换,这样就得到了乱序的数组列表了
二分优化下,当数组比较大时用得上:

static void randomArray(int array[], int length)//数组元素的乱序排列
{
    for(int i=0; i< length/2+1; i++)
    {
       QTime t;
       t= QTime::currentTime();
       qsrand(t.msec()+t.second()*1000);
       int r = i + qrand()%(length-i);
       int temp=array[i];
       array[i] = array[r];
       array[r] = temp;
    }
}
work

相关文章

  • 使用qsrand将特定的数组列表随机排列C++

    简单的一个小数组做打乱顺序的操作,因为太小,感觉也没必要进行二分优化了 使用示例: 思路很简单,用QTime::c...

  • Python基础(6) - 打乱列表顺序的操作

    手工打乱列表元素的顺序 编写函数(不使用Python模块的函数),打乱列表元素的顺序 如何对列表元素进行随机排列 ...

  • 数组随机排列

    es6 方法 es5 方法

  • 列表

    列表 列表概念 列表是由一系列特定顺序排列的元素组成的序列。 创建列表的方式,可以使用 list()和 [] 生成...

  • 第三章:列表简介

    列表(list)由一系列按特定顺序排列的元素(item)组成 给列表指定表示复数的名称,易于区分 创建列表: 使用...

  • 「中高级前端必须了解的」数组乱序

    引言 数组乱序指的是:将数组元素的排列顺序随机打乱。 将一个数组进行乱序处理,是一个非常简单但是非常常用的需求。比...

  • python-洗牌算法的实现

    简单来说 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排...

  • Python基础:Python列表简介以及使用

    Python基础:Python列表简介以及使用 列表简介 基本介绍 有一系列按特定顺序排列的元素组成 用方括号([...

  • Python:列表简介

    概念 列表由一系列按特定顺序排列的元素组成,可以将任何元素加入列表中。Python中用[]来表示列表,用逗号分隔元...

  • 【Python】03 列表简介

    前言:什么是列表,如何使用列表元素。 3.1 什么是列表 由一系列按特定顺序排列的元素组成。通常包含多个元素,一般...

网友评论

      本文标题:使用qsrand将特定的数组列表随机排列C++

      本文链接:https://www.haomeiwen.com/subject/gvbkyltx.html