willsun888
5/7/2013 - 6:02 AM

快速排序

快速排序

#include<stdio.h>
#include<time.h>
#include <iostream>
#define SWAP(x,y) ((x)=(x)^(y),(y)=(x)^(y),(x)=(x)^(y))
//快速排序
int partions(int a[],int left,int right)
{
  int key=a[left];
	while(left<right)
	{
		while(left<right&&a[left]<key)
			++left;
		while(left<right&&a[right]>key)
			--right;
		SWAP(a[left],a[right]);
	}
	a[left]=key;
	return left;
}
void qsort(int a[],int left,int right)
{
	if(left<right)
	{
		int q=partions(a,left,right);
		qsort(a,left,q-1);
		qsort(a,q+1,right);
	}
}
void main()
{
	clock_t start,finish;
	double durtime;
	start = clock();
	srand(time(0));
	int i,a[10];
	for(i=0;i<10;i++)
	{
		a[i]=rand()%100;
		printf("%d ",a[i]);
	}
	printf("\n");
	qsort(a,0,9);
	for(i=0;i<10;i++)
	{
		printf("%d ",a[i]);
	}
	finish=clock();
	durtime=(double)(finish-start)/CLOCKS_PER_SEC;
	printf("\n%fseconds",durtime);
	system("pause");
}