js 冒泡排序与快速排序

Posted l-c-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 冒泡排序与快速排序相关的知识,希望对你有一定的参考价值。

刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来。

1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换。否则的话当前元素再与下下个元素比较,一直到 跟后面的元素都比较完。这个是升序的排序,降序则相反。

 1 var arr = [1,23,4,12,32,455,122,3,43,13];
 2 
 3 function bubbleSort(arr) {
 4     for (let i = 0; i < arr.length - 1; i++) {
 5         for(let j = i + 1; j < arr.length; j++) {
 6         if (arr[i] > arr[j]) {
 7                 let maxVal = arr[i];
 8                 arr[i] = arr[j];
 9         arr[j] = maxVal;
10         }
11     }
12     }
13     return arr;
14 }
15 console.log(‘bubble sort: ‘, bubbleSort(arr));          

 

2. 快速排序:是对冒泡排序的一种改进。

  • 先从数组里面选出一个数,一般都是第一个数即array[0],然后再将其他数据分成两个数组,小于array[0]的放在左边数组,大于的放在右边数组。
  • 对两个数组进行递归排序(按照1步骤),直到数组长度 <= 1,跳出递归(这个是主要条件,不然会陷入死循环)。
  • 将数据 concat 成一个最终的数组。这个是升序的排序,降序则相反。
 1 var arr = [1,23,4,12,32,455,122,3,43,13];
 2 function quickSort(arr) {
 3     if (arr.length <= 1) {
 4         // 注意加这个条件,不然死循环
 5         return arr;
 6     }
 7     var reference = arr[0];
 8     var leftList = [];
 9     var rightList = [];
10     arr.forEach(item => {
11         if (item > reference) {
12         rightList.push(item);
13     } else if (item < reference) {
14         leftList.push(item);
15     }
16     })
17 
18     return quickSort(leftList).concat(reference, quickSort(rightList));
19 }
20 console.log(‘quick sort: ‘ , quickSort(arr))        

 

以上是关于js 冒泡排序与快速排序的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序与快速排序

冒泡排序与快速排序

js冒泡排序法——选择排序(other)——计数排序(桶排序)——快速排序——插入排序-更新

python 冒泡排序与快速排序 遇到的错误与问题

js数组冒泡排序,快速排序的原理以及实现

JS中冒泡排序,选择排序,快速排序