乐趣区

关于javascript:三大经典算法之冒泡排序插入排序和快速排序

引言

良久不写文章了,最近在学小程序感觉没得写,明天就来说说面试必备的排序算法吧,话不多唠,间接上代码,以下会画图解说每种排序的规定

冒泡排序

代码见图一,注解见图二(以下同上)

 function bubbleSort(ary) {for (let i = 0; i < ary.length-1; i++) {for (let j = 0; j < ary.length - 1 - i; j++) {if (ary[j] > ary[j + 1]) {let temp = ary [j + 1];
           ary [j + 1] = ary[j];
           ary[j] = temp;
         }
       }
     }
     return ary
   }

   let ary = [12, 8, 24, 16, 1];
   let newAry = bubbleSort(ary);
   console.log(newAry);

插入排序

function insertSort(ary) {let handle = [];
     handle.push(ary[0]);
     for (let i = 1; i < ary.length; i++) {for (let j = handle.length - 1; j >= 0; j--) {if (ary[i] > handle[j]) {handle.splice(j + 1, 0, ary[i]);
           break
         }
         if (j === 0) {handle.unshift(ary[i])
         }
       }
     }
     return handle
   }
   let ary = [12, 8, 24, 16, 1];
   let newAry = insertSort(ary);
   console.log(newAry);

疾速排序

 function quickSort(ary) {if (ary.length <= 1) return ary;
    let middle = ary.splice(Math.floor(ary.length / 2), 1)[0];
    let leftAry = [], rightAry = [];
    ary.forEach(v => v < middle ? leftAry.push(v) : rightAry.push(v));
    return quickSort(leftAry).concat(middle, quickSort(rightAry))
  }
  let ary = [12, 8, 15, 10, 24, 16, 1];
  let newAry = quickSort(ary);
  console.log(newAry);

明天不想谈话(其实并不知道说啥),就这样,哈哈哈哈哈

退出移动版