js各种排序汇总
来源:互联网 发布:深圳旅游知乎 编辑:程序博客网 时间:2024/06/03 11:29
js排序汇总
//排序1 function sort1(arr){ for(var i=1;i<arr.length;i++){ for(var j=0;j<arr.length-1;j++){ if(arr[i]<arr[j]){ var temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } arr.push();// console.log(arr); }
// 冒泡排序 function sort2(arr){ for(var i=0;i<arr.length;i++){ for(var j=arr.length-1;j>0;j--){ if(arr[j]<arr[j-1]){ var temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } arr.push(); console.log(typeof(arr));//object console.log(arr); } sort1([32,15,56,78,2]);//Array [ 2, 15, 32, 56, 78 ] sort2([32,15,56,78,1]);
// 排序函数 function compare2(num1,num2){ return num1-num2;//从小到大 } var nums=[0,15,5,10,3,156,30]; nums.sort(compare2); console.log(nums);
// 快速排序1 var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length/2); var pivot = arr.splice(pivotIndex,1); // alert(pivot); var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } }// 递归 return quickSort(left).concat([pivot], quickSort(right)); }; console.log(quickSort([32,15,56,78,1,96,36]));
//JS实现快速排序(从小到大排列) Array.prototype.quickSort = function() { quickSortHelper(this, 0, this.length-1); //确定哨兵, 递归分离 function quickSortHelper(arr, start, end) { if(start < end){ //快排结束条件start>=end //获取哨兵的位置 var part = partation(arr, start, end); //根据递归实现排序 arguments.callee(arr, start, part-1); arguments.callee(arr, part+1, end); } } function partation(arr, start, end) { var pivot = arr[end]; //设置哨兵 var i = start; //交换的次数+1 哨兵要在数组插入的位置 for(var j=start; j<end; j++) { if(arr[j] < pivot) { swap(arr, i, j); i++; } } swap(arr, i, end); return i; } //交换数组元素的值 function swap(arr, i, j) { var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }; //------------------- test ------ var arr = [5, 2, 3, 1, 4]; arr.quickSort(); console.log(arr);
//--------------直接插入排序----- function inSort(arr){ for(var i=1;i<arr.length;i++){ var x=arr[i]; for(var j=i-1;j>-1;j--){ if(arr[j]>x) arr[j+1]=arr[j]; else break; } arr[j+1]=x; } console.log(arr); } inSort([32,15,56,78,1,8]);
//--------------------选择排序------ function selectSort(arr){ for(var i=0;i<arr.length-1;i++){ var min=i; for(var j=i+1;j<arr.length;j++){ if(arr[j]<arr[min]){ min=j; } if(i-min){ var temp=arr[min]; arr[min]=arr[i]; arr[i]=temp; } } } console.log(arr); } selectSort([3,2,5,8,4,7,6,9]);
//------归并排序------ function mergeSort(items) { if (items.length < 2) { return items; } var middle = Math.floor(items.length / 2), left = items.slice(0, middle), right = items.slice(middle), params = merge(mergeSort(left), mergeSort(right)); params.unshift(0, items.length); console.log(params);// return sum1.apply(this,[num1,num2]); items.splice.apply(items, params); console.log(items); return items; 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++]); } else { result.push(right[ir++]); } } return result.concat(left.slice(il)) .concat(right.slice(ir)); } } // test var arrT = [2, 1, 3, 12, 5, 66, 23, 87, 15, 32]; console.log(mergeSort(arrT));
阅读全文
0 0
- js各种排序汇总
- 排序各种方法汇总!
- 各种排序算法汇总
- 排序各种方法汇总!
- 各种排序算法汇总
- 各种排序算法汇总
- 各种排序方法汇总
- 各种排序算法汇总
- 各种排序算法汇总【转】
- 各种排序算法汇总详解
- 各种排序算法大汇总
- js 实现各种排序
- js各种排序
- 各种排序算法汇总(交换排序:冒泡排序、快速排序)
- js实现各种排序算法
- js实现各种排序总结
- js各种排序算法,练手
- 黑马程序员_Java各种排序汇总
- CS231n Convolutional Neural Networks for Visual Recognition
- HighCharts(2)坐标轴5部分
- Javascript and DOM
- 分代垃圾收集器
- hdu6140 bitset
- js各种排序汇总
- ubuntu 12.04 安装编译L2.6.35_1.1.0_130130 基于 i.mx28
- sudo: javac:找不到命令
- js、jQuery获得父节点、子节点、兄弟节点的整理
- MFC中定义全局变量【待续】
- 双边滤波器原理及其matlab实现
- dedecms如何自定义分页样式
- 分组密码算法工作模式(block cipher operation mode)
- 如何修改搜索关键词内容