快速排序(qsort)

快速排序(qsort)


代码如下:


#include <stdio.h>

void Qsort(int *a, int low, int high)
{
	if (low < high)
	{
		int first = low;  
		int last = high; 
		int key = a[first];  // 第一个位置取为枢轴位置
		while (first < last)
		{
			while (first < last && key < a[last]) 
				--last; // 从右往左:扫描到第一个小于key(枢轴)位置last 
			a[first] = a[last];  // 将右边第一个小于key的值,赋值给枢轴位置
			while (first < last && a[first] < key) 
				++first; // 从左往右:扫描到第一个大于key(枢轴)位置first
			a[last] = a[first];  // 将左边第一个大于key的值,赋值给枢轴位置
		}
		a[first] = key;  // 中间值已到位
		Qsort(a, low, first - 1);	// 递归左半部分
		Qsort(a, first + 1, high);	// 递归右斗部分
	}
}

int main()
{
	int a[] = { 57, 68, 59, 52, 72, 28, 96, 33, 24 };
	
	Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);
	for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
		printf("%d ", a[i]);

	getchar();
	return 0;
}


你可能感兴趣的:(算法,快速排序,排序算法,qsort)