JavaScript排序算法

本文详细介绍了三种常见的排序算法:快速排序、冒泡排序和选择排序。包括每种算法的基本原理、具体实现步骤及示例代码。通过本文,读者可以了解这些算法的工作机制并掌握其JavaScript实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

亲爱的小伙伴们,先去安一个蓝灯然后访问这里看一下效果,戳这里看一下图解

快速排序

  1. 原理

    (1)在数据集中选择一个元素作为基准(pivot);
    (2)所有小于基准的移到基准左侧,反之右侧;
    (3)对基准左右两侧两个子集不断重复(1)、(3)步,直到所有子集只剩下一个元素为止。

  2. 举例

    {85, 24, 63, 45, 17, 31, 96, 50}
    (1)选定45为基准
    {24 17 31 45 85 63 96 50}
    (2)不断重复
    {24 17 31 45 85 63 96 50}
    {17 24 31 45 50 63 85 96}
    {17 24 31 45 50 63 85 96}
    排序之后:{17 24 31 45 50 63 85 96}

  3. 代码

function quicksort(arr)
{
    if (arr.length == 0)
        return [];
    var left = new Array();
    var right = new Array();
    var pivot = arr[0];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] < pivot) {
           left.push(arr[i]);
        } else {
           right.push(arr[i]);
        }
    }
    return quicksort(left).concat(pivot, quicksort(right));
}
console.log(quicksort(a));

冒泡排序

  1. 原理

    对比第一项和第二项
    如果第一项应该在第二项的后面,交换
    对比第二项和第三项
    如果第二项应该在第三项之后,交换
    持续直到数据结束

  2. 举例

    对数组[3, 2, 4, 5, 1]排序
    顺序正确则无须交换,循环直至[1,2,3,4,5]

  3. 代码

//简单js思路
function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}
//正序正向冒泡排序
//外循环控制循环周期数,内循环则是项与项之间的排序比较
function bubbleSort(items){
    var len = items.length,
        i, j, stop;
    for (i=0; i < len; i++){
        for (j=0, stop=len-i; j < stop; j++){
            if (items[j] > items[j+1]){
                swap(items, j, j+1);
            }
        }
    }
    return items;
}
//正序反向冒泡排序
function bubbleSort(items){
    var len = items.length,
        i, j;
    for (i=len-1; i >= 0; i--){
        for (j=len-i; j >= 0; j--){
            if (items[j] < items[j-1]){
                swap(items, j, j-1);
            }
        }
    }
    return items;
}
//反序冒泡排序
function bubbleSort(items){
    var len = items.length,
        i, j,stop;
    for (i=0; i < len; i++){
        for (j=0; stop=len-i; j++){
            if (items[j] < items[j+1]){
                swap(items, j, j+1);
            }
        }
    }
    return items;
}

选择排序

  1. 原理

    把每一个数都与第一个数比较,如果小于第一个数,就把它们交换位置;重复n-1轮。

  2. 代码

 function selectSort(arr){
              var len=arr.length;
              var temp;
              for(var i=0;i<len-1;i++){
                  for(var j=i+1;j<len;j++){
                      if(arr[j]<arr[i]){
                          temp=arr[j];
                          arr[j]=arr[i];
                          arr[i]=temp;
                     }
                 }
                 i++;
             }
             return arr;
         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值