C语言实现快速排序

时间:2021-12-07 01:19:43

快速排序就是在原数组中指定一个元素a(随机或数组第一个元素),然后调整数组中所有比a小的元素到a的左边,比a大的元素到a的右边。调整完之后,在用同样的方法处理a左边和右边的子数组,到最后使整个数组全部排序完毕。

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

void quicksort(int a[], int low, int high)
{
	int temp = 0;
	int i = low;
	int j = high;

	temp = a[low];

	if(low < high)
	{
		while(i<j)
		{
			while(a[j]>=temp && i<j)
			{
				j--;
			}
			a[i] = a[j];
			while(a[i]<=temp && i<j)
			{
				i++;
			}
			a[j] = a[i];
		}
		a[i] = temp; //分界元素回到分界处
		quicksort(a,low,i-1);
		quicksort(a,j+1,high);
	}
}

void main()
{
	int array[6] = {4,3,10,82,2,1};
	quicksort(array,0,5);
	for(int i=0;i<6;i++)
	{
		printf("%d,",array[i]);
	}

}