随机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 就可以放到工具方法
最新文章
- tomcat 增加压缩设置
- 模板——RMQ
- Nodejs&#183;内存控制
- Unsafe的应用
- 关于 MAXScript 中文路径返回上级目录(精简版)
- OC中@property属性关键字的使用(assign/weak/strong/copy)
- HDU How many integers can you find 容斥
- Java构造函数的继承问题
- Html5新标签解释及用法
- Ubuntu下fcitx安装。(ibus不会用)
- [大牛翻译系列]Hadoop(10)MapReduce 性能调优:诊断reduce性能瓶颈
- STL容器的效率比较
- 使用Win32/ATL建立窗口的过程
- UVA11388 GCD LCM(数论)
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
- 我的Spring Boot学习记录(一):自动配置的大致调用过程
- JS对象的拷贝
- react问题解决的一些方法
- javaScript核心基础
- UNITY 的GC ALLOC到底是什么