常用排序算法2--归并排序和快速排序
来源:互联网 发布:情侣礼物知乎 编辑:程序博客网 时间:2024/05/18 18:55
function ArrayList() {var arr = [];this.insert = function (value) {arr.push(value);}this.toString = function () {return arr.join(" ");}/*归并排序*/this.mergeSort = function () {arr = mergeSortRec(arr);return this;}function mergeSortRec(arr) {var len = arr.length;if(len == 1) {return arr;}var mid = Math.floor(len / 2),left = arr.slice(0, mid),right = arr.slice(mid, len);return merge(mergeSortRec(left), mergeSortRec(right));}function merge(left, right) {var result = [],il = 0,ir = 0;while(il < left.length && ir<right.length) {if(left[il] < right[ir]) {result.push(left[il]);il++;} else {result.push(right[ir]);ir++;}}while(il < left.length) {result.push(left[il]);il++;}while(ir < right.length) {result.push(right[ir]);ir++;}return result;}/*快速排序*/this.quickSort = function () {quick(arr, 0, arr.length-1);return this;}function quick(arr, left, right) {var index;if(arr.length > 1) {index = partition(arr, left, right);if(left < index -1) {quick(arr, left, index - 1);}if(index < right) {quick(arr, index, right);}}}function partition(arr, left, right) {var pivot = arr[Math.floor((right + left) / 2)],i = left,j = right;while(i <= j) {while(arr[i] < pivot) {i++;}while(arr[j] > pivot) {j--;}if(i <= j) {swapQuickSort(arr, i, j);i++;j--;} }return i;}function swapQuickSort(arr, index1, index2) {var temp = arr[index1];arr[index1] = arr[index2];arr[index2] = temp;}}function test() {// 0 1 2 3 4 5// len = 6var arr = [10, 2, 3, 7, 20, 4];var arr_list = new ArrayList();for(var i=0; i<arr.length; ++i) {arr_list.insert(arr[i])}console.log("arr_list = ", arr_list.toString());//console.log("arr_list.mergeSort = ", arr_list.mergeSort().toString());console.log("arr_list.quickSort = ", arr_list.quickSort().toString());}test();
阅读全文
0 0
- 常用排序算法2--归并排序和快速排序
- 排序算法2-快速排序、归并排序
- 归并排序和快速排序算法实现
- Python算法 归并排序和快速排序
- 快速排序和归并排序算法
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 排序算法(2)-归并,快速
- 常用排序算法——插入排序,快速排序,归并排序,堆排序,计数排序
- 排序算法之快速排序和归并排序
- 排序算法之快速排序和归并排序
- 常用排序算法--归并排序
- 常用排序算法-归并排序
- 排序算法(2)冒泡排序,快速排序,归并排序和基数排序MSD,LSD
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- 快速排序和归并排序
- 归并排序和快速排序
- 归并排序和快速排序
- 归并排序和快速排序
- 【Matlab】处理图像
- Swagger-editor使用openapi3.0编写的demo
- 架构2
- 判断质数
- 值栈(ValueStack)
- 常用排序算法2--归并排序和快速排序
- linux的环境变量
- python网址
- 前端知识体系目录
- html之SweetAlert2使用方法集锦(一)
- Duilib Button属性和HorizontalLayoutUI的扩展
- 美团点评2018笔试编程题
- TimeUtil --- 时间格式化工具
- C语言面向对象之STL库--Vector