八大排序Javascript(原理+实现)

这篇博客详细介绍了JavaScript中八种排序算法的原理和实现,包括插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。文章通过对比不同排序算法的性能,指出在不同数据规模下,冒泡排序、选择排序和插入排序的时间效率相对较低,而快速排序和希尔排序在大数据量时表现较好,但快速排序存在栈溢出风险。
摘要由CSDN通过智能技术生成

插入排序

直接插入排序(稳定)

思路

将数组第一个元素看作已经排序好的,按顺序遍历后面的元素,每遍历到一个,将它与已排序好的数组元素比较,插入到正确位置。

实现

function insertSort(arr){
   
    for(let i=1;i<arr.length;i++){
   //第一层循环:遍历待比较的数组元素
        let temp=arr[i];
        for(var j=i-1;j>=0 && arr[j]>temp;j--){
   //第二层循环:将待比较的与已经排序的元素比较
           arr[j+1]=arr[j];
        }
        //交换位置
        arr[j+1]=temp;
    }
    return arr;
}
console.log(insertSort([2,7,1,9,5]))//[1,2,5,7,9]

希尔排序(不稳定)

思路

先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

实现

function shellSort(arr){
   
    let n=arr.length,d=n;
    while(d>1){
   
        d=Math.floor(d/2);
        for(var i=d;i<n;i++){
   
            var temp=arr[i]
            for(var j=i-d;j>=0 && arr[j]>temp;j=j-d){
   
                arr[j+d]=arr[j];
            }
            arr[j+d]=temp;
        }
        }
        return arr;
}
console.log(shellSort([7,59,1,9,5]))//[1,5,7,9,59]

选择排序

简单选择排序(不稳定)

思路

找出待排序元素最小(大)值,与第一个比较并交换位置,再在剩下的元素里找到最小(大)值与第二个元素比较并交换位置,直到最后数组有序。

实现

function directSelectSort(arr){
   
    
    for(var i=0;i<arr.length;i++){
   
        let minIndex=i,temp=arr[i];
        for(var j=i+1;j<arr
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值