js数组排序
- 快速排序:每次循环使用数组中间位置的值按照大小,将数组分成左右两个部分,使用递归,分别对左右两个部分执行分割操作
1 // 快速排序 2 function quickSort(arr) { 3 if (arr.length <= 1) { 4 return arr; 5 } 6 const midIndex = Math.floor(arr.length / 2); 7 const midValue = arr.splice(midIndex, 1)[0]; 8 const left = []; 9 const right = []; 10 for (const item of arr) { 11 if(item < midValue) { 12 left.push(item); 13 } else { 14 right.push(item); 15 } 16 } 17 return quickSort(left).concat([midValue], quickSort(right)); 18 } 19 20 // 测试代码 21 const arr = [1,4,3,25,6,9,8] 22 const result = quickSort(arr); 23 console.log("result:", result);
- 冒泡排序:循环长度为n的数组,每循环一次将数组中第n-1大的数组放入数组中正确的位置。
// 冒泡排序 function bubbleSort(arr) { if (Array.isArray(arr) && arr.length === 0) return arr; for (let index = 0; index < arr.length - 1; index++) { for (let inner = 1; inner < arr.length - 1 - index; inner++) { if (arr[inner] > arr[inner + 1]) { [arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]] } } } return arr; } // 测试代码 const bubble = [1, 4, 3, 25, 6, 9, 8] const bubbleResult = bubbleSort(arr); console.log("bubbleResult:", bubbleResult);