js之冒泡排序与快速排序
Posted 玉麟家园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于js之冒泡排序与快速排序的主要内容,如果未能解决你的问题,请参考以下文章