js 常用算法


冒泡排序

1、比较相邻的两个元素,如果前一个比后一个大,则交换位置。
2、比较完第一轮的时候,最后一个元素是最大的元素。
3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。

        function bSort(arr) {
          var len = arr.length;
          for (var i = 0; i < len - 1; i++) {
            for (var j = 0; j < len - 1 - i; j++) {
              // 相邻元素两两对比,元素交换,大的元素交换到后面
              if (arr[j] > arr[j + 1]) {
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
              }
            }
          }
          return arr;
        }

        //举个数组
        myArr = [20, 18, 27, 19, 35];
        //使用函数
        bSort(myArr);

            

选择排序

        //选择排序
        let arr = [145, 248, 31, 45, 9, 11, 145, 300];
        function arrSort(arr) {
          for (let i = 0; i < arr.length - 1; i++) {
            //遍历数组
            let min = arr[i]; //防止arr[i]发生变化
            for (let j = i + 1; j < arr.length; j++) {
              //双重遍历,查找最小的数进行交换,跟冒泡不一样的地方在于,选择排序,假如第4位更小,则是1,4位交换,不是3,4位交换
              if (min > arr[j]) {
                let temp = min;
                min = arr[j];
                arr[j] = temp;
              }
            }
            arr[i] = min;
          }
          return arr;
        }
        console.log(arrSort(arr));

快速排序

        //快速排序
        let arr = [145, 248, 31, 45, 9, 11, 145, 300];
        function arrSort(arr) {
          if (arr.length <= 1) {
            return arr;
          }
          var pivotIndex = Math.floor(arr.length / 2);
          var pivot = arr.splice(pivotIndex, 1)[0]; //取出中间的数字,比如第一次就取出9
          var left = [];
          var right = [];
          for (var i = 0; i < arr.length; i++) {
            if (arr[i] < pivot) {
              //第一次运算,如果小于9就进入左数组,大于就进入右数组
              left.push(arr[i]);
            } else {
              right.push(arr[i]);
            }
          }
          return arrSort(left).concat([pivot], arrSort(right)); //递归,再把左数组分成两半进行排序,右数组同理。
        }

sort 排序

/**

* 对象数组排序

* @param {*} prop 参数名字

* @param {*} rev 默认升序 arr.sort((a,b)=>{b-a})

* @returns arr.sort(sortby('age')) //根据年纪进行排序

*/

function sortby(prop, rev = true) {

return function (a, b) {

let val1 = a[prop];

let val2 = b[prop];

return rev ? val1 - val2 : val2 - val1;

};

let list = [{num:'4'},{num:'1'},{num:'7'}]

let arr = list.sort(sortby('num'));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值