zoukankan      html  css  js  c++  java
  • 数据结构和算法

    快速排序

    思想/步骤:1.在数组里随便找一个数作为基数(一般为第一个);

          2.从右往左找,找到一个小于基数的值,与基数交换位置;

          3.从左往右找,找到一个大于基数的值,与基数交换位置;

          4.重复上面两步(其实不是重新从头找,而是保留上次查找的指针),直到基数左边全部小于它,右边全部大于它(其实就是左右指针都指向同一数),这就是一趟快排。

          5.对左边和右边都进行上面1-4步。

    
    
     var quickSort = function(arr) {
          if (arr.length <= 1) { return arr; }
          var pivotIndex = Math.floor(arr.length / 2);
          var pivot = arr.splice(pivotIndex1);
          var left = [];
          var right = [];
          for (var i = 0i < arr.lengthi++){
            if (arr[i] < pivot) {
              left.push(arr[i]);
            } else {
              right.push(arr[i]);
            }
          }
          return quickSort(left).concat(pivotquickSort(right));
        };

     数组去重

    
    
    Array.prototype.uniq = function () {
        var resArr = [];
        var flag = true;
        for(var i=0;i<this.length;i++){
            if(resArr.indexOf(this[i]) == -1){
                if(this[i] != this[i]){   //排除 NaN
                    if(flag){
                        resArr.push(this[i]);
                        flag = false;
                    }
                }
                else{
                    resArr.push(this[i]);  
                }
            }
        }
        return resArr;
    }
    var arr=[false'NaN',false,false,truetrue,true,'NaN','NaN',NaN,'NaN','NaN',undefined,undefined,undefined,null,undefined,null,NaN,NaN,NaN0,01,1, {}, {}, 'a''a',NaN,NaN,true]
    console.log(arr.uniq());

     判断数组a是否包含b

    function is_array_contain(a,b){//判断数组a是否包含b
    for(var i=0;i<b.length;i++){
    var flag = false;
    for(var j=0;j<a.length;j++){
    if(b[i]===a[j]){
    flag = true;
    break;//防止继续无用功
    }
    }
    if(!flag){
        return false;
       };
    }
    return true;
    }

     数组乱序

    arr.sort(function(a){
    return Math.random()>.5 ? 1 : -1;
    });

     或者用下面的,性能更加好

    Array.prototype.shuffle = function() {
            for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
            return this;
    };
  • 相关阅读:
    oracle_深刻理解数据库的启动和关闭
    oracle_利用闪回功能恢复数据
    oracle_五千万数据插入测试
    java_eclipse_svn 与服务器同步时 ,忽略某类型文件和文件夹
    oracle_根据表名拼装语句
    crawler_网络爬虫之数据分析_httpwatcher
    113. Path Sum II (Tree; DFS)
    112. Path Sum (Tree; DFS)
    150. Evaluate Reverse Polish Notation (Stack)
    32. Longest Valid Parentheses (Stack; DP)
  • 原文地址:https://www.cnblogs.com/shen076/p/6571609.html
Copyright © 2011-2022 走看看