zoukankan      html  css  js  c++  java
  • 题目:若干个不重复数,打乱顺序输出

      上次在跟一个朋友吃饭的时候,他说起他那个时候的一个面试题,闲来无事,顺手做了下。
      题目是:若干个不重复数,打乱顺序输出,用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 />");
                    };
                };
            };
  • 相关阅读:
    go微服务框架kratos学习笔记十(熔断器)
    go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
    go微服务框架kratos学习笔记八 (kratos的依赖注入)
    go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)
    编译原理之语法分析-自下而上分析(四)
    编译原理之语法分析-自下而上分析(三)
    编译原理之语法分析-自下而上分析(二)
    编译原理之语法分析-自下而上分析(一)
    TreeSet的两种实现方法:Comparable和Comparator(Java比较器)
    JavaWeb学习之JSP(三) EL表达式
  • 原文地址:https://www.cnblogs.com/myself/p/1964837.html
Copyright © 2011-2022 走看看