随机List中数据的排列顺序

it2022-05-09  46

把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 就可以放到工具方法

转载于:https://www.cnblogs.com/jixinyu12345/p/4872546.html


最新回复(0)