美文网首页
使用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++

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