今天阅读了博客-http://blog.csdn.net/morewindows/article/details/6684558
利用填坑思想来写快排,简单实用,
现在我要利用这种方法,写javascript版本的快速排序算法。
代码如下:
function QuickSort(array){
if(array.length <= 1)
return array;
var b = 0,e = array.length - 1;
//设置基准数字
var key = array[b];
while(b < e){
while(b < e && key <= array[e])
e -- ;
if(b < e){
array[b] = array[e];
b++;
}
while(b < e && key > array[b])
b ++:
if(b < e){
array[e] = array[b];
e --;
}
}
array[b] = key;
var f = QuickSort(array.slice(0,b));
var s = QuickSort(array.slice(e + 1,array.length));
return f.concat([key],s);
}
var s = QuickSort([30,3,4,5,61,2,34,5,6,7,8,9,10]);
console.log(s);
代码虽然不长,但是还是有一些坑需要注意,就是在slice上。
在快排中,需要往下传递的参数是不包括基准点的数组。
但是slice(begin,end)函数,返回的数据是从 array[begin] 到 array[end - 1]的部分。
是不需要再重复的写 end - 1的。
基本上就是这样。
网友评论