数组快速排序
2023-09-11 14:19:39 时间
举个栗子:
对下面数组进行排序:
let originArray = [[45, 26, 78, [77, 23], 66], 24, 63,63, [45, 10], 17, 31, 96, 50];
分治法;
function quickSort(arr){ arr = arr.join(",").split(",").map(Number); var recursion = function(targetArray){ let baseIndex = Math.floor(targetArray.length/2), miduleNumer, leftArray = [], miduleArray = [], rightArray = []; if(targetArray.length <= 1) return targetArray; miduleNumer = targetArray.splice(baseIndex,1)[0]; for(let i = 0;i < targetArray.length;i++){ if(targetArray[i] > miduleNumer){ leftArray.push(targetArray[i]); }else if(targetArray[i] < miduleNumer){ rightArray.push(targetArray[i]); }else{ miduleArray.push(targetArray[i]); } } return [...recursion(leftArray),...recursion(miduleArray),...recursion([miduleNumer]),...recursion(rightArray)]; } return recursion(arr); }
二:
function quickSort(arr){ arr = arr.join(",").split(",").map(Number); let resultArr = []; function recursion(targetArr){ if(targetArr.length > 0){ let minNum = Math.min(...targetArr); targetArr.splice(targetArr.indexOf(minNum),1); resultArr.unshift(minNum); recursion(targetArr); } } recursion(arr); return resultArr; } console.log(quickSort(targetArray));
.
相关文章
- javascript数组操作大全,数组方法总汇
- Java实现 LeetCode 561 数组拆分 I(通过排序算法改写PS:难搞)
- Java实现 LeetCode 81 搜索旋转排序数组 II(二)
- Java实现 LeetCode 81 搜索旋转排序数组 II(二)
- Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
- jQuery的类数组对象结构(转)
- (算法)旋转有序数组中查找某个数
- JAVA中,数组的操作与排序
- javascript中数组揭秘
- 每日一道 LeetCode (24):将有序数组转换为二叉搜索树
- LeetCode-1636. 按照频率将数组升序排序【数组,哈希表,排序】
- ZZNUOJ_C语言1119:一维数组排序(完整代码)
- PHP面试题:使用PHP描述快速排序算法,对象可以是一个数组?
- 遍历数组、数组排序
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- 【LeetCode Python实现】34. 在排序数组中查找元素的第一个和最后一个位置(中等)
- 922. 按奇偶排序数组 II
- 6132. 使数组中所有元素都等于零-快速排序法
- 排序链表-c语言常规方法,数组存储加快速排序
- Leetcode 81. 搜索旋转排序数组 II
- NC256 数组里面没有出现过的数字
- sql 扫描数组
- JS数组sort比较函数
- heap的使用——合并K个排序间隔列表,和merge K个有序数组是一样的
- php多维数组排序 3
- Python(17):Numpy之array数组的排序
- leetcode 搜索旋转排序数组