zoukankan      html  css  js  c++  java
  • 随机生成一个长度为n的数组

    1、随机生成长度为n,且值在[min-max]范围内

    function generateRandomArr(n, min, max) {
        var arr = [];
        for (var i = 0; i < n; i++) {
            var random = Math.floor(Math.random() * (max - min + 1) + min);
            arr.push(random);
        }
        return arr;
    }

    2、随机生成长度为n,且值在[0-(n-1)]范围内的无重复数据的有序数组

    function generateOrderedNoRepeatArr(n) {
        var arr = Array.from({length:n}, (v, k) => k);
        return arr;
    }

    3、随机生成长度为n,且值在[min-max]范围内的随机不重复数组,前提是n<(max-min)

    function generateNoRepeatdArr(n, min, max) {
        var arr = [],res = [];
        for(var i=min;i<max;i++){
            arr.push(i);
        }
        for (i=0 ; i <n; i++) {
            var index = parseInt(Math.random()*(arr.length));   
            res.push(arr[index]);
            arr.splice(index,1)  //已选用的数,从数组arr中移除, 实现去重复
        }
        return res;
    }

    4、随机生成长度为n,且值在[min-max]范围内的随机有序数组

    /*首先生成一个无须且可能有重复数据的数组*/
    function generateOrderedArr(n, min, max) {
        var arr = [];
        for (var i = 0; i < n; i++) {
            var random = Math.floor(Math.random() * (max - min + 1) + min);
            arr.push(random);
        }
        return arr;
    }
    /*以下为三路快排的方法,可对无序数组进行排序,达到良好的效果*/
    function __quickSort3Ways(arr, l, r) {
        if (l >= r) return;
        /*partition*/
        var random = Math.floor(Math.random() * (r - l + 1) + l);
        [arr[l], arr[random]] = [arr[random], arr[l]];
    
        var v = arr[l];
        var lt = l;  //arr[l+1...lt]<v
        var gt = r + 1;  //arr[gt...r]>v
        var i = l + 1;  //arr[lt+1...i]==v
        while (i < gt) {
            if (arr[i] < v) {
                [arr[i], arr[lt + 1]] = [arr[lt + 1], arr[i]];
                lt++;
                i++;
            } else if (arr[i] > v) {
                [arr[i], arr[gt - 1]] = [arr[gt - 1], arr[i]];
                gt--;
            } else {  //arr[i]==v
                i++;
            }
        }
        [arr[l], arr[lt]] = [arr[lt], arr[l]];
        __quickSort3Ways(arr, l, lt - 1);
        __quickSort3Ways(arr, gt, r);
    }
    
    function quickSort3Ways(arr, n) {
        __quickSort3Ways(arr, 0, n - 1);
    }
    /*排好序的数组*/
    quickSort3Ways(generateOrderedArr(100,1,10),100);
  • 相关阅读:
    memory consistency
    网页基础
    ECC
    RSA
    argparse模块
    009-MySQL循环while、repeat、loop使用
    001-mac搭建Python开发环境、Anaconda、zsh兼容
    013-在 Shell 脚本中调用另一个 Shell 脚本的三种方式
    012-Shell 提示确认(Y / N,YES / NO)
    014-docker-终端获取 docker 容器(container)的 ip 地址
  • 原文地址:https://www.cnblogs.com/qinshizhen/p/15267352.html
Copyright © 2011-2022 走看看