js各种排序汇总
2017-08-21 23:32
169 查看
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));
相关文章推荐
- JS针对Array的各种操作汇总
- 数据结构各种排序汇总
- 数据结构中的各种排序方法小结(JS实现)
- 各种排序方法汇总
- 排序各种方法汇总!
- 常见的js各种错误类型汇总说明
- js 各种排序方法和sort方法的区别
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
- js之刷新父页面的各种方法汇总
- 数据结构中的各种排序方法-JS实现
- 各种排序方法的JS实现
- js各种排序
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
- JAVA各种排序汇总
- js各种继承方式汇总
- c语言各种排序汇总(不包括优化后的)
- JAVA各种排序汇总
- JS针对Array的各种操作汇总
- 各种排序 js实现
- js各种间距数据汇总