排序算法(冒泡、快速、sort)
冒泡
外循环每次次指定一个位置,内循环将外循环指定位置上的数与其它位置上的数依次做比较
由于每次外循环都能排好一个最大值,因此在内循环的比较中可以跳过已经拍好序的位置,再做其他位置的比较哦
for (var i = 0; i < len; i++) { for (var j = i + 1; j < len; j++) { console.log(i) if( arr[i] > arr[j] ){ ind = arr[j]; arr[j] = arr[i]; arr[i] = ind; } } }
另个模式,不用外循环指定位置,
for (var j = 0; j < len-i-1; j++) { if( arr[j] > arr[j + 1] ){ ind = arr[j]; arr[j] = arr[j+1]; arr[j+1] = ind; } }*
快速
利用递归调用
function quicksort(arr){ if (arr.length <= 1) { return arr; } var ind = Math.floor(arr.length / 2); var base = arr[ind]; var left = []; var right = []; for (var i = 0, len = arr.length; i < len; i++) { if(i === ind){ continue; } if(arr[i] < base){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quicksort(left).concat(base, quicksort(right)); }
数组方法sort
利用s数组本地排序方法
function systemsort(arr){ if (arr.length <= 1) { return arr; } arr.sort(function(a,b){ return a-b;//返回负数就是升序,返回正数则降序 }) return arr; }
over
function quicksort(arr){if (arr.length <= 1) {return arr;}var ind = Math.floor(arr.length / 2);var base = arr[ind];var left = [];var right = [];for (var i = 0, len = arr.length; i < len; i++) {if(i === ind){continue;}if(arr[i] < base){left.push(arr[i]);}else{right.push(arr[i]);}}return quicksort(left).concat(base, quicksort(right));}

浙公网安备 33010602011771号