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

举例说明数组的排序方法有哪些?,第1张

举例说明数组排序方法有哪些?
  • 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]))

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4947840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存