当前位置: 首页 > 面试题库 >

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

乐正乐湛
2023-03-14
本文向大家介绍举例说明数组的排序方法有哪些?相关面试题,主要包含被问及举例说明数组的排序方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下
  • reverse() 直接颠倒数组中的元素
// 颠倒排序
var a = [1,2,3];
var b = a.reverse();
console.log(a); // [3,2,1]
console.log(b); // [3,2,1]
  • sort() 自定义排序,基础是按照字符编码(Unicode->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]))
 类似资料:
  • 本文向大家介绍举例说明js创建数组有哪些方法?相关面试题,主要包含被问及举例说明js创建数组有哪些方法?时的应答技巧和注意事项,需要的朋友参考一下 来点歪门邪道, 那我也来点,

  • 本文向大家介绍举例说明数组和对象的迭代方法分别有哪些?相关面试题,主要包含被问及举例说明数组和对象的迭代方法分别有哪些?时的应答技巧和注意事项,需要的朋友参考一下 Array forEach method for...of (Symbol.iterator) for...in (Enumerable Keys) Object for...in (Enumerable Keys) Object st

  • 本文向大家介绍举例说明原生的html组件有哪些?相关面试题,主要包含被问及举例说明原生的html组件有哪些?时的应答技巧和注意事项,需要的朋友参考一下 ……

  • 本文向大家介绍请举例说明动态操作DOM的方法有哪些?相关面试题,主要包含被问及请举例说明动态操作DOM的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 创建一个元素 向元素末尾添加一个子节点 将新的元素插入到指定元素的前面 删除一个子节点 替换子节点 克隆元素 //接收一个布尔类型的参数 true,false //如果不传参数,默认是false;

  • 本文向大家介绍举例说明常用的BOM属性和方法有哪些?相关面试题,主要包含被问及举例说明常用的BOM属性和方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 window(浏览器窗口) 主要属性有: name:浏览器窗口的名字 top:代表最顶层窗口 parent:代表父级窗口 self:代表当前窗口 innerWidth:指浏览器窗口的内宽(不含菜单栏、地址栏、工具栏、状况栏) 在 IE 下使

  • 本文向大家介绍举例说明clear取值有哪些?相关面试题,主要包含被问及举例说明clear取值有哪些?时的应答技巧和注意事项,需要的朋友参考一下 none 默认值。允许浮动元素出现在两侧。 left 在左侧不允许浮动元素。 right 在右侧不允许浮动元素。 both 在左右两侧均不允许浮动元素。 inherit 从父元素继承 clear 属性的值。