栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

举例说明数组的排序方法有哪些?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

举例说明数组的排序方法有哪些?

  • reverse()
    直接颠倒数组中的元素
// 颠倒排序var a = [1,2,3];var b = a.reverse();console.log(a); // [3,2,1]console.log(b); // [3,2,1]
  • sort()
    自定义排序,基础是按照字符编码(Unipre->UTF-16)进行排序(数组在原数组上进行排序,不生成副本)
// 颠倒排序var x = [1,3,2];var y = x.sort((a,b) => {    // if (a < b ) {    //     return -1;    //   }    //   if (a > b ) {    //     return 1;    //   }    //   // a must be equal to b    //   return 0;    // 以上可以简写如下    return a - b;});console.log(y) // [1, 2, 3]
  • for
    循环

    • 冒泡排序
    function bubbleSort(arr) {    var i = arr.length,        j;    var tempExchangVal;    while (i > 0) {        for (j = 0; j < i - 1; j++) { if (arr[j] > arr[j + 1]) {     tempExchangVal = arr[j];     arr[j] = arr[j + 1];     arr[j + 1] = tempExchangVal; }        }        i--;    }    return arr;}var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];var arrSorted = bubbleSort(arr);console.log(arrSorted);
    • 快速排序
    const quickSort = (array) => {    const sort = (arr, left = 0, right = arr.length - 1) => {        if (left >= right) {//如果左边的索引大于等于右边的索引说明整理完毕 return        }        let i = left        let j = right        const baseval = arr[j] // 取无序数组最后一个数为基准值        while (i < j) {//把所有比基准值小的数放在左边大的数放在右边 while (i < j && arr[i] <= baseval) { //找到一个比基准值大的数交换     i++ } arr[j] = arr[i] // 将较大的值放在右边如果没有比基准值大的数就是将自己赋值给自己(i 等于 j) while (j > i && arr[j] >= baseval) { //找到一个比基准值小的数交换     j-- } arr[i] = arr[j] // 将较小的值放在左边如果没有找到比基准值小的数就是将自己赋值给自己(i 等于 j)        }        arr[j] = baseval // 将基准值放至中央位置完成一次循环(这时候 j 等于 i )        sort(arr, left, j - 1) // 将左边的无序数组重复上面的操作        sort(arr, j + 1, right) // 将右边的无序数组重复上面的操作    }    const newArr = array.concat() // 为了保证这个函数是纯函数拷贝一次数组    sort(newArr)    return newArr}console.log(quickSort([6,1,1,3,4]))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/384095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号