zoukankan      html  css  js  c++  java
  • 1.面试题 排序算法总结

    一:排序

    1.冒泡 排序

    原生:var arr=[5,4,3,2,1];

    for (var i=0; i<arr.length-1; i++){

    //第一次循环比较轮数

    for (var j=0; j<arr.length-1-i;j++){

    //第2次循环比较次数

     if(arr[j]>arr[j+1]){

    借助第3放变量进行交换

    var temp =arr[j];

    arr[j]=arr[j+1];

    arr[j+1]=temp;

    }

    }

    }

     调用api:

    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。

    function sortNumber(a, b)
    {
    return a - b
    }

    console.log('arr',arr);

    console.log('arr.sort(sortNumber)',arr.sort(sortNumber));

    二 :数组反转

    原生:

    arr =[1,2,3,4,5,6,7,8];

    for (var i=0;i<arr.length/2;i++){

    // arr[0] arr[arr.length-1-0]

    // arr[1] arr[arr.length-1-1]

    // arr[2] arr[arr.length-1-2]

    // arr[3] arr[arr.length-1-3]

    var temp = arr[i];

    arr[i]= arr[arr.length-1-i];

    arr[arr.length-1-i]=arr[i];

    }

    直接调用:arr.reverse()

    三:数组中去重
    原生:
    思路:1.创建一个新数组,把原数组中得第一个元素插入到新数组中
       2.遍历原数组中得每一个元素分别和新数组中得每一个元素进行比较
    //原数组
    var arr=[1,2,3,4,5,6,7,7,7,7,7,8,8,8];
    //新数组
    var arr2=[];
    arr2[0]=arr[0];

    for (var i=0;i<arr.length;i++){
    for (var j=0;j<arr2.length;j++){
    if(arr2[j]==arr[i]){
    break;
    }
    if(j===arr2.length-1){
    arr2.push(arr[i]);
    }
    }
    }
    四、在字符串中输出次数最多的字符,并返回次数
        this.handle('hello');
     
     
      handle = (param) => {
        if (param.length == 1) {
          return param;
        }
        let newObj = {};
        for (let i = 0; i < param.length; i++) {
          if (!newObj[param.charAt(i)]) {
            newObj[param.charAt(i)] = 1;
          } else {
            newObj[param.charAt(i)] += 1;
          }
          console.log('123', newObj[param.charAt(i)])

          console.log('22222', newObj);
        }
        var maxObj = {
          maxkey: "",
          maxvalue: 0
        }
        for (var k in newObj) {
          if (newObj[k] > maxObj.maxvalue) {
            maxObj.maxvalue = newObj[k];
            maxObj.maxkey = k;
          }
        }
        console.log('3333', maxObj);
        return maxObj;
      }
    六、 breack和continue

     

     
  • 相关阅读:
    FCKeditor 2.6.4在ASP.NET中的安装、配置方法【转】 Fred
    框架页中针对IE6自适应宽度,不出现横向滚动条 Fred
    安装中文VS2008 SP1 和.NETFRAMEWORK 3.5SP1后智能提示是英文的解决办法 Fred
    .Net转义字符[转] Fred
    ReportViewer无法直接打印 Fred
    ASP.NET MVC 官方教程 Fred
    修改SQL Server 2005 sa用户密码的方法 Fred
    数据类型/对象类型介绍(1)NSString
    关于Chrome沙箱技术(沙盒技术)
    UITableView cell自定义视图中插入Table实现复杂界面
  • 原文地址:https://www.cnblogs.com/web-zxq/p/12825327.html
Copyright © 2011-2022 走看看