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

  • 相关阅读:
    关键性代码整理
    Geodatabase组织结构
    Access存储过程,环境:VB 2005+.NET2.0+ACCESS2003(转载)
    智能替换DataTable.Select中会导致错误的单引号
    nacos 1.4.2 建立集群,公司启动linux服务器常用命令
    docker 完全启动命令
    nginx 老php项目和java的并存
    Intellj 启动多个应用实例
    服务器自动备份git
    nacos 微服务
  • 原文地址:https://www.cnblogs.com/ljx111/p/12969726.html
Copyright © 2011-2022 走看看