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

猜你喜欢

转载自www.cnblogs.com/cq1715584439/p/10705134.html
今日推荐