• 数组排序【冒泡排序、快速排序、选择排序】


    在工作中遇到了排序问题,随后就总了了几种排序方式【冒泡排序、快速排序、选择排序】

    【冒泡排序】

      原理:比较相邻的两个元素,将值大的交换至右侧

    // 冒泡排序:比较相邻的两个元素,将值大的交换至右边
            var arr = [1,20,5,62,8,2,45];
            function bubbleSort(obj){
                for(var i = 0; i < obj.length; i++){
                    for(var j = 0; j < obj.length -i -1; j++){
                        if(obj[j] > obj[j+1] ){
                            var temp = obj[j];
                            obj[j] = obj[j+1];
                            obj[j+1] = temp;
                        }
                    }
                }
                return obj;
            }
            document.write("冒泡排序" + bubbleSort(arr) + "<br>");

    【快速排序】

      原理:1、选择数组的一个中间值,分成左右两个数组,

         2、用中间值与数组的值进行比较,比中间值小的放到左数组,比中间值大的放到右数组

           3、最后将左数组、中间值与右数组连接起来

     //快速排序:选择中间值,分左右两个数组,左数组的都比右数组的小
            var arr = [1,20,5,62,8,2,45];
            function quickSort(arr){
                if(arr.length <= 1){
                    return arr;
                }
                var middleIndex = Math.floor(arr.length / 2);
                var middleVal = arr.splice(middleIndex, 1)[0];
                var left = [], right = [];
                for(var i = 0; i < arr.length; i++){
                    if(arr[i] < middleVal){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                return quickSort(left).concat([middleVal], quickSort(right))
            }
            document.write("快速排序:" + quickSort(arr) + "<br>");

    【选择排序】

      原理:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后

     //选择排序:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后
            var selectSortArr = [1,20,5,62,8,2,45];
            function selectSort(arr){
                if(arr.length <= 1){
                    return arr;
                }
                var minIndex, temp;
                console.log(arr)
                for(var i = 0; i< arr.length; i++){
                    minIndex = i;
                    for(var j = i + 1; j < arr.length; j++){
                        if(arr[j] < arr[minIndex]){
                            minIndex = j;
                        }
                    }
                    temp = arr[i];
                    arr[i] = arr[minIndex];
                    arr[minIndex] = temp;
                    console.log(arr)
                }
                return arr;
            }
            document.write("选择排序:" + selectSort(selectSortArr));

     

    -THE END-

  • 相关阅读:
    mybatis两种方式
    js绑定下拉框数据源
    修改 Idea 终端 Terminal 为 GitBash
    git stash使用
    解决百度网盘容量不符,没存进东西但容量变小的问题
    key_load_public: invalid format
    排序算法
    SpringBoot---自动配置原理
    mysql系列——Explain关键字(十)
    mysql系列——开启慢查询日志(十一)
  • 原文地址:https://www.cnblogs.com/menggirl23/p/10243474.html
Copyright © 2020-2023  润新知