/** @name 快速排序 * @lastmodify 2010/07/14 * @desc 比较排序 最差运行时间O(n*n); 最好运行时间O(nlogn) */ function QuickSort(list){ var i = 0; var j = list.length; var len = j; var left; var right; var k = findK(i , j); if(k != 0){ var leftArr = []; var rightArr = []; var midArr = [list[k]]; while(len--) { if(len != k){ if(list[len] > list[k]){ rightArr.push(list[len]); } else{ leftArr.push(list[len]); } } } left = QuickSort(leftArr); right = QuickSort(rightArr); list = left.concat(midArr).concat(right); } return list; }
function findK(i,j){ //默认找它的中间位置 return Math.floor((i + j) / 2); }
/** @name 桶排序 * @author lebron * @lastmodify 2010/07/15 * @desc 非比较排序 */ function BucketSort(list) { var len = list.length; var range = findMax(list); var result = [], count = []; var i,j; for (i = 0; i < range; i++) { count.push(0); }
for ( j = 0; j < len; j++) { count[list[j]]++; result.push(0); } for (i = 1; i < range; i++) { count[i] = count[i-1] + count[i]; } for (j = len - 1; j >= 0; j--) { result[count[list[j]]] = list[j]; count[list[j]]--; } return result; }