js算法: quick sort 快速排序
2016-06-29 14:55
429 查看
'use strict'; //快速排序 //大致逻辑 /** * quickSort(A, from, to) { * p = partion(A, from, to); //获取分隔点 * if (from < to) { * quickSort(A, from, p-1); //递归分隔左边 * quickSort(A, p+1, to); //递归分隔右边 * } * } **/ function partion(arr, from, to) { //选择一个比较数,暂且使用 arr[to] //比arr[to]小的放到拆分点左边 //比arr[to'大的放到拆分点右边 var partDot = from - 1; if (from < to) { let tmpData; //临时存储变量 var cmpBase = arr[to]; //用于分隔的数 for(let i= from; i< to; i++) { if (arr[i] <= cmpBase) { partDot = partDot + 1; //交换 tmpData = arr[partDot] arr[partDot] = arr[i] arr[i] = tmpData; } } partDot = partDot + 1; tmpData = arr[partDot]; arr[partDot] = arr[to]; arr[to] = tmpData; } return partDot; } function quickSort(arr, from, to) { let p = partion(arr, from, to); if (from < to) { quickSort(arr, from, p-1); quickSort(arr, p+1, to); } } ///////////辅助函数////////////////// //随机获取一个数组 function randNum() { return parseInt(Math.random() * 100); } function getRandArr(length) { var arr = []; for(var i=0; i<length; i++) { arr.push(randNum()); } return arr; } var arr = getRandArr(10); quickSort(arr, 0, arr.length-1); console.info(arr); //原数组: [ 70, 79, 69, 9, 74, 29, 43, 38, 15, 81 ] //排序后 [ 9, 15, 29, 38, 43, 69, 70, 74, 79, 81 ]
相关文章推荐
- 在命令行用 sort 进行排序
- 快速排序
- Linux Shell - 如何使用sort与uniq命令删除重复的文本行
- Redis sort 排序命令详解
- 批处理命令教学之字符串排序(sort)
- C#快速排序算法实例分析
- C#递归算法之快速排序
- mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解决方法
- C++快速排序的分析与优化详解
- C++ 关于STL中sort()对struct排序的方法
- C#中Arraylist的sort函数用法实例分析
- php快速排序原理与实现方法分析
- Js中sort()方法的用法
- js采用concat和sort将N个数组拼接起来的方法
- 如何写JS数组sort的比较函数
- js实现数组冒泡排序、快速排序原理
- javascript中sort()的用法实例分析
- js LZ77算法的实现代码
- 详解Matlab中 sort 函数用法
- php简单实现快速排序的方法