zoukankan      html  css  js  c++  java
  • 数组排序方法总结

    let arr = [12, 14, 145, 167, 32, 1, 90, 78];

     1、sort 排序

    //升序
    arr.sort((a,b) => {return a - b;})
    
    //降序
    arr.sort((a,b) => {return b - a;})

    2、冒泡排序

    实现思路:
    1. ⽐较相邻的元素。如果第⼀个⽐第⼆个⼤,就交换他们两个。
    2. 对每⼀对相邻元素作同样的⼯作,从开始第⼀对到结尾的最后⼀对。这步做完后,最后的元素会是最⼤的数。
    3. 针对所有的元素重复以上的步骤,除了最后⼀个。
    4. 持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。
    function morkArr(arr){  
    if(!arr.length) return
      var newArr;
      for(let i = 0; i < arr.length;i++){
        for(let j = 0; j < arr.length - 1; j++){
          if(arr[j] > arr[j + 1]){      
            newArr = arr[j];        
            arr[j] = arr[j + 1];
            arr[j + 1] = newArr;
          }
        }
      }  
      return arr;
    }
    //优化版
    function morkArr1(arr){  
      if(!arr.length) return
     var newArr;
      
      for(let i = 0; i < arr.length;i++){
        let flag = false;
        for(let j = 0; j < arr.length - 1; j++){
          if(arr[j] > arr[j + 1]){
            newArr = arr[j];
            
            arr[j] = arr[j + 1];
            arr[j + 1] = newArr;
            flag = true;  
          }    
        }
       
          //如果没有交换过元素,则已经有序 
        if(!flag) continue     
    }
      
      return arr;
    }
    3、快排
     
    实现思路:
    以数组中间位置为基础,循环比对,比中间小放左侧,如果比中间值大,则放到右侧数组中
    此时第一轮后将数组分为 左侧 + 中间 + 右侧
    分别对左侧数组执行以上两步操作,直到拆不出数组位置
    最后拼接数组

    function quickSort(arr) {

      if (arr.length <= 1) {

        return arr;

      }

      let centerIndex = Math.floor(arr.length / 2),

         centerVal = arr.splice(centerIndex, 1)[0];

      let leftArr = [],

        rightArr = [];

      for (let i = 0; i < arr.length; i++) {

        if (arr[i] <= centerVal) {

          leftArr.push(arr[i]);

        } else {

          rightArr.push(arr[i]);

        }

      }

      return quickSort(leftArr).concat(centerVal, quickSort(rightArr));

    }

    4、插入排序
     
    实现思路:
    首先从第一元素后面与前面对比,如果后面小于前面元素,该元素往前插入,依次类推,
    已排序最后一个与后面元素对比,依次插入
     
    function insertSort(arr){
      for(let i = 0; i < arr.length; i++){
        let key = arr[i];
        let j = i - 1;
        while(j >= 0 && arr[j] > key){
          arr[j + 1] = arr[j];
          j --
        }
        arr[j + 1] = key
      }
      return arr
    }
  • 相关阅读:
    cassandra安装
    002 spring boot框架,引入mybatis-generator插件,自动生成Mapper和Entity
    033 SSM综合练习09--数据后台管理系统--基于AOP的日志处理
    032 SSM综合练习08--数据后台管理系统--jsp页面显示当前用户名
    031 SSM综合练习07--数据后台管理系统--用户详情查询
    030 SSM综合练习06--数据后台管理系统--SSM权限操作及Spring Security入门
    029 SSM综合练习05--数据后台管理系统--订单分页查询
    027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作
    Idea 目录结构下有红色波浪线
    virtualbox上,android x86 的分辨率的设置
  • 原文地址:https://www.cnblogs.com/fmixue/p/15088031.html
Copyright © 2011-2022 走看看