A闪的 BLOG 技术与人文
快速排序使用非常官方,算法也相对简单,借助分治思想,将数据进行拆分,而后进行两侧对比排序。
实现方法如下:
var data = [321,3,12,45,22,77,90,12,1,32,34,65,78,25,85,24,96];
function p(arr,l,r)
{
if(l>r)
{
return;
}
var i=l;
var j=r;
var t=0;
var temp=0;
temp = arr[l];
while(i!=j)
{
while(arr[j]>=temp && i<j)
{
j--;
}
while(arr[i]<=temp && i<j)
{
i++;
}
if(i<j)
{
t=arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[l] = arr[i];
arr[i] = temp;
p(arr,l,r-1);
p(arr,l+1,r);
}
console.log(data);
p(data,0,data.length-1);
console.log(data);
运行打印结果
[ 321, 3, 12, 45, 22, 77, 90, 12, 1, 32, 34, 65, 78, 25, 85, 24, 96 ]
[ 1, 3, 12, 12, 22, 24, 25, 32, 34, 45, 65, 77, 78, 85, 90, 96, 321 ]