zoukankan      html  css  js  c++  java
  • 随机List中数据的排列顺序

    把1000个数随机放到1000个位置。

    这也就是一个简单的面试题。觉得比较有意思。就顺带写一下

    举个简单的例子吧。

    学校统一考试的时候  有 1000个人,然后正好有 1000个考试位置,需要随机排列。那么就有了如下的代码。

    private List<int> getList()
           {

               Random random = new Random();
               List<int> list = new List<int>();


               for (int i = 0; i < 1000; i++)
               {
                   //为数组赋值
                   list[i] = i + 1;
               }


               for (int i = 0; i <1000; i++)
               {
                   int  temp;
                   int j = random.Next(0, 999);
                   //交换两个数据的值
                   temp = list[j];
                   list[j] = list[i];
                   list[i] = temp;
               }
               return list;
              
           }

    这样我们再改装一下  假设我们就知道了 这些学生的ID 并且放到了一个list中

    就有了如下的

    private List<int> getList( List<int> list)
           {

               Random random = new Random();
               for (int i = 0; i <list.Count; i++)
               {
                   int  temp;
                   int j = random.Next(0, list.Count-1);
                   //交换两个数据的值
                   temp = list[j];
                   list[j] = list[i];
                   list[i] = temp;
               }
               return list;
              
           }

    这样就简单封装了获取随机顺序了。

    可以按照   返回的list  安排座位了。  复杂度为O(1000)

    最后再改装一下  变成一个common 方法就是终极版啦。任意随机的list

    private List<T> getList<T>( List<T> list)
           {

               Random random = new Random();
               for (int i = 0; i <list.Count; i++)
               {
                   T  temp;
                   int j = random.Next(0, list.Count-1);
                   //交换两个数据的值
                   temp = list[j];
                   list[j] = list[i];
                   list[i] = temp;
               }
               return list;
              
           }
       添加一个static 就可以放到工具方法
    image

  • 相关阅读:
    CodingSouls团队-个人博客(八)
    CodingSouls团队-个人博客(七 )
    vuedraggable
    idea创建springboot(脚手架创建)
    线上环境解决nginx访问laravel除了根目录全是404的问题
    前端使用工具网站
    阿里云内容协作平台(ccp)的基本使用
    photoshop CS6修改启动界面
    laravel 增强代码提示功能插件(barryvdh / laravel-ide-helper)
    laravel代码调试工具(laravel/telescope)
  • 原文地址:https://www.cnblogs.com/jixinyu12345/p/4872546.html
Copyright © 2011-2022 走看看