刚好今晚看了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))
原文地址:https://www.cnblogs.com/l-c-blog/p/10582185.html
时间: 2024-10-15 01:24:18