快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路: 在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放到这个数的左边,依次递归调用直到比较队列中只有两个数。
代码实现:
var arrs = [23,85,61,37,55,12,63,11,99,39,70,21,23];
function QuickSort(arr , s,e){
var len = e;
var token = arr[s];
for(var i=s+1;i<=len;i++){
var ttt = arr[i];
if(token >= arr[i]){
var temp = arr[i];
for(var k = i;k>s;k--){
arr[k] = arr[k-1];
}
arr[s] = temp;
s++;
}
}
return s;
}
function sort(arrs,s,e){
var t = QuickSort(arrs,s,e);
if(t-1 >= s ){
sort(arrs , s,t-1);
}
if(t+1 <= e){
sort(arrs , t+1,e);
}
}
sort(arrs,0,arrs.length);
document.getElementById("app").innerHTML = arrs+"";
注:代码可能还有可以优化的地方,欢迎吐槽!