之二快速排序

 

快排算法,在计算机面试中会经常被问到,这个一定得熟记

总结了一下,快排的步骤:

1.设置一个Key值等于array[0], 然后从数列尾部向前遍历,若array[high] > Key, high--;直到aray[high] <= Key; 然后把这个值赋给array[low];

2.从数列首开始向后遍历,若array[low] < Key ,low++;直到array[low] >= Key,然后把这个值赋给array[high];

3.把目前停留位置的值赋为Key ,也就是array[low] = Key;

这是一趟排序,然后分成两部分,重复1-3 步骤。具体C++程序如下:

using namespace std;

int qSort(int array[], int low, int high)
{
	if (low > high)
		return 0;
	int ll = low;
	int hh = high;
	int Key = array[low];
	while (ll < hh)
	{
		while (ll < hh && array[hh] >= Key)
		{
			hh--;
		}
		array[ll] = array[hh];
		while (ll < hh && array[ll] < Key)
		{
			ll++;
		}
		array[hh] = array[ll];
	}
	array[ll] = Key;
	qSort(array, low, ll-1);
	qSort(array, ll+1, high);	
}

 测试一下:

int main(int argc, char *argv[])
{
	int arr[10] = {10,9,8,7,6,5,4,3,2,1};
	qSort(arr, 0, 9);
	int k = 0;
	while (k <= 9)
	{
		cout << arr[k] << " ";
		k++;	
	}
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

posted on 2012-11-16 16:12  乐则行之  阅读(75)  评论(0)    收藏  举报

导航