Nodejs 之快速排序

快速排序使用非常官方,算法也相对简单,借助分治思想,将数据进行拆分,而后进行两侧对比排序。

实现方法如下:

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 ]