常用算法 (JS实现)
全排序列
function swap(array,a,b){ var m=array[a]; array[a]=array[b]; array[b]=m; } function full_sort(array,from,to){ if(from==to){ console.log(array); return; }else{ for(var i=from;i<to;i++){ swap(array,from,i); full_sort(array,from+1,to); swap(array,from,i); } } }
快速排序
function quicksort(array) { if (array.length <= 1) return array; var pivot = array[0]; var left = []; var right = []; for (var i = 1; i < array.length; i++) { if (array[i] > pivot) { right.push(array[i]) } else { left.push(array[i]); } } return quicksort(left).concat([pivot], quicksort(right)); }
function swap(array,m,n) { var x=array[m]; array[m]=array[n]; array[n]=x; } function partial(array,start,end){ var m=start; var n=end; var mid=Math.floor((start+end)/2); console.log(mid) var p=array[mid]; while(m<=n){ while(array[m]<p){ m++ } while(array[n]>p){ n-- } if(m<=n){ swap(array,m,n); m++; n--; } } return m } function qsort(array,start,end){ if(array.length>1){ var index=partial(array,start,end) if(start<index-1){ qsort(array,start,index-1) } if(index<end){ qsort(array,index,end) } } return array; } var a=[20,10,5,6,7,40]; qsort(a,0,5)