zoukankan      html  css  js  c++  java
  • javascript的排序算法

    已经准备秋招一段时间了,因为这个关系也在各种巩固知识,顺便整理一下一些东西。这篇文章就是自己整理了一下各种JS的排序算法,以便自己以后回顾。

    冒泡排序

    function bubbleSort(arr){
        var len = arr.length
        for(var i=len-1;i>0;i--){
            for(var j=0;j<i;j++){
                var temp = 0
                if(arr[j]>arr[j+1]){
                //如果前一个元素大于后一个元素,则交换位置
                var temp = 0
                temp = arr[j+1]
                arr[j+1] = arr[j]
                arr[j] = temp
                }
            }
        }
        return arr
    }
    
    var arr = [1,2,5,4,56,54,33,2,23]
    bubbleSort(arr) //[1, 2, 2, 4, 5, 23, 33, 54, 56]
    

      

    快速排序

    function quickSort(arr){
        if(arr.length<1){
            return arr
        }
        //选取基数
        var pivotIndex = Math.floor(arr.length/2)
        var pivot = arr.splice(pivotIndex,1)
    
        var left = []  //放置小于基数的数
        var right = []  //防止大于基数的数
        for(var i=0;i<arr.length;i++){
            if(arr[i]>pivot){
                right.push(arr[i])
            }else{
                left.push(arr[i])
            }
        }
        return quickSort(left).concat(pivot,quickSort(right))
    }
    
    var arr = [1, 2, 3, 4, 5]
    quickSort(arr)  //[1, 2, 3, 4, 5]
    

      

    选择排序
    将待排序列中最小的值与第一个位置的值交换;
    剩下的值中再取最小的值与第二个位置的值交换,以此类推直到所有的顺序都排好。

    function selectSort(arr){
        var len = arr.length
        for(var i=0;i<len-1;i++){
            var min = arr[i]  //默认先将第i个值列为最小值
            var minIndex = i  //最小值的下标
            for(var j = i+1;j<len;j++){
                //从第i个值之后的值开始比较,因为i之前的值已经排好序
                if(arr[j]<min){
                    min = arr[j]
                    minIndex = j
                }
            }
            //将第i个值与最小值交换位置
            arr[minIndex] = arr[i]
            arr[i] = min
        }
        return arr
    }
    
    var arr = [3,2,13,5,6,7]
    selectSort(arr)  //[2, 3, 5, 6, 7, 13]
    

      

    插入排序
    从第二个元素开始排序;
    待排元素之前的元素已经排好序,将待排元素按照大小插入合适的位置,以此类推。

    function insertSort(arr){
        var len = arr.length
        for(var i=1;i<len;i++){
            var now = arr[i]
            var j = i-1
            while(j>=0 && arr[j]>now){
                arr[j+1] = arr[j]  //数组后移
                j--
            }
            arr[j+1] = now
        }
        return arr
    }
    
    var arr = [1,3,2,5,4]
    selectSort(arr)  //[1, 2, 3, 4, 5]
    

      

  • 相关阅读:
    JS Dom_API
    JS 动态表格(添加、删除行)
    将本地网页上传到 apache2 及 github 的步骤
    软件工程之美 第一周
    树莓派安装芯片驱动并测试
    Visoul Studio 2019 远程调试 中文乱码
    Visoul Studio 2019 远程调试 RaspberryPi C 项目
    课设提纲
    PHP PDO 一 : 常用方法
    设置子域名及申请其证书
  • 原文地址:https://www.cnblogs.com/minz/p/5971254.html
Copyright © 2011-2022 走看看