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

  • 相关阅读:
    并发编程之线程进阶
    并发编程之线程
    进程间通信(队列和管道)
    在python程序中的进程操作
    操作系统之进程
    网络编程之黏包
    树莓派 websocket 控制LED
    lua 调用 C -- 实例 C函数作为应用程序的一部分
    linux 环境下进程什么时候会被 killed掉
    STM32 + cJSON 死机问题解决
  • 原文地址:https://www.cnblogs.com/jixinyu12345/p/4872546.html
Copyright © 2011-2022 走看看