惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
博客园_首页
H
Help Net Security
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
I
InfoQ
SecWiki News
SecWiki News
T
Tailwind CSS Blog
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
P
Palo Alto Networks Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
M
MIT News - Artificial intelligence
S
Schneier on Security
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
G
GRAHAM CLULEY
IT之家
IT之家
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
Google DeepMind News
Google DeepMind News
V
V2EX
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
B
Blog RSS Feed
S
SegmentFault 最新的问题
博客园 - 叶小钗
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure

博客园 - o0myself0o

利用线程池实现多客户端和单服务器端Socket通讯(二):异步编程模型实现 生产者消费者模式,代码中碰到的疑问(已解决) 利用线程池实现多客户端和单服务器端Socket通讯(一):同步方式 Entity Framework 4.0 ObjectContext下的各种方法实践 wtf js(四) - o0myself0o - 博客园 wtf js(三) number的类型不是number wtf js(二) 算法:给定两个已从小到大排好序的整型数组arrA和arrB,将两个数组合并成arrC,使得arrC也要按从小到大的顺序排好序 应用中的单例模式 面试题:给你三个bool类型变量a, b, c,判断至少有两个为true javascript面向对象编程(一) - o0myself0o - 博客园 wtf js(一) - o0myself0o - 博客园 社区网站功能实现系列(三):社区页面无刷新回发的一种实现方式 社区网站功能实现系列(二):社区内容分享到别的SNS 社区网站功能实现系列(一):多国语言的实现 反射获取Class中Property的值 A*寻路初探 闲谈ASP.NET 2.0缓存技术 使用 jQuery 简化 Ajax 开发
题目:若干个不重复数,打乱顺序输出
o0myself0o · 2011-02-25 · via 博客园 - o0myself0o

  上次在跟一个朋友吃饭的时候,他说起他那个时候的一个面试题,闲来无事,顺手做了下。

  题目是:若干个不重复数,打乱顺序输出,用javascript实现

  实现如下:

       window.onload = function () {
            
// 1到100,打乱顺序输出
            outputOne();
            document.write(
"<br /><br />");// 自定义的列表,打乱顺序输出
            outputTwo();
        };
function outputOne() {
            
var count = 100;
            
var size = 10;for (var i = 1; i <= count; i++) {
                document.write(i 
+ "  ");
                
if (i > 1 & i % size == 0) {
                    document.write(
"<br />");
                };
            };

            document.write(

"<br /><br />");var list = [];
            
var number;
            
var listCount;while (list.length < count) {
                listCount 
= 0;
                number 
= Math.floor(Math.random() * count) + 1;
                
for (var i = 0; i < list.length; i++) {
                    
if (number != list[i]) {
                        listCount
++;
                    };
                };
if (listCount == list.length) {
                    list.push(number);
                };
            };
for (var i = 1; i <= list.length; i++) {
                document.write(list[i 
- 1+ " ");
                
if (i > 1 && i % size == 0) {
                    document.write(
"<br />");
                };
            };
        };
function outputTwo() {
            
var size = 10;
            
var list = [123451020305010020030050010006789];
            
var newList = [];for (var i = 1; i <= list.length; i++) {
                document.write(list[i 
- 1+ "  ");
                
if (i > 1 & i % size == 0) {
                    document.write(
"<br />");
                };
            };

            document.write(

"<br /><br />");var index;
            
var listCount;while (newList.length < list.length) {
                listCount 
= 0;
                index 
= Math.floor(Math.random() * list.length);
                
for (var i = 0; i < newList.length; i++) {
                    
if (list[index] != newList[i]) {
                        listCount
++;
                    };
                };
if (listCount == newList.length) {
                    newList.push(list[index]);
                };
            };
for (var i = 1; i <= newList.length; i++) {
                document.write(newList[i 
- 1+ " ");
                
if (i > 1 && i % size == 0) {
                    document.write(
"<br />");
                };
            };
        };

感谢 明天.Net(小彭) 同学提供一种更高明的思路:

利用往新的数组中随意位置依次插入新的元素的方式得到一个随机排列,即我们需要的结果

        function outputThree() {
            
var size = 10;
            
var list = [123451020305010020030050010006789];
            
var outlist = [];for (var i = 1; i <= list.length; i++) {
                document.write(list[i 
- 1+ "  ");
                
if (i > 1 & i % size == 0) {
                    document.write(
"<br />");
                };
            };

            document.write(

"<br /><br />");for (var i = 0; i < list.length; i++) {
                
if (i == 0) {
                    outlist.push(list[i]); 
                } 
else {
                    
var index = Math.floor(Math.random() * (outlist.length + 1));
                    outlist.splice(index, 
0, list[i]);
                };
            };
for (var i = 1; i <= outlist.length; i++) {
                document.write(outlist[i 
- 1+ " ");
                
if (i > 1 && i % size == 0) {
                    document.write(
"<br />");
                };
            };
        };