zoukankan      html  css  js  c++  java
  • js之冒泡排序与快速排序

     1        //冒泡排序
     2         let arr = [1, 6, 3, 7, 5, 9, 2, 8];
     3         function sort(arr) {
     4             //升序
     5            console.time("冒泡排序耗时")
     6             let num1 = null;
     7             for (let i = 0; i < arr.length - 1; i++) {
     8                 //外层循坏的作用是每次循坏找出一个最大数放在这个数组的最后面
     9                 for (let j = 0; j < arr.length - i - 1; j++) {
    10                     //内层循坏的作用是比较相邻两个数的大小从而进行交换位置
    11                     //借助一个中间容器交换位置
    12                     if (arr[j] > arr[j + 1]) {
    13                         num1 = arr[j];
    14                         arr[j] = arr[j + 1];
    15                         arr[j + 1] = num1;
    16                     }
    17                 }
    18             }
    19             console.timeEnd("冒泡排序耗时")
    20         }
    21         sort(arr);
     1         //快速排序
     2         //快速排序就是从中间取一个数然后声明两个空数组
     3         //小于这个数的放在左边大于这个数的放在右边
     4         //最后通过递归调用实现的一种排序方法
     5         //比冒泡排序用时更多
     6         function sort(arr) {
     7             console.time("快速排序耗时")
     8             if (arr.length <= 1) {
     9                 //递归出口
    10                 return arr;
    11             }
    12             let middleIndex = Math.floor(arr.length / 2);//中间数的下标 分奇偶
    13             let middle = arr[middleIndex];
    14            let left=[];
    15            let right=[];
    16            for(let i=0;i<arr.length;i++){
    17                if(arr[i]<middle){
    18                    left.push(arr[i])
    19                }else if(arr[i]>middle){
    20                    //注意这里不要直接写else 要排除相等的时候 否则会造成死循坏
    21                    right.push(arr[i])
    22                }
    23            }
    24            console.timeEnd("快速排序耗时")
    25            return sort(left).concat([middle],sort(right))
    26         }
    27         console.log(sort(arr))

    发现一枚大牛的十种排序法  https://www.cnblogs.com/beli/p/6297741.html

    一条不甘于平凡的咸鱼分享
  • 相关阅读:
    Map与对象关系的思考之P1563玩具谜题
    vector性能调优之resize与reserve
    模拟--P1328 生活大爆炸版石头剪刀布 题解
    模拟--P1540 机器翻译
    get、post、put、delete
    Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框(转载)
    Docker(4) 制作镜像
    Git(1) 常用命令
    Linux(1) 常用命令
    Docker(3) 基础知识
  • 原文地址:https://www.cnblogs.com/cq1715584439/p/10705134.html
Copyright © 2011-2022 走看看