再次学习快速排序(C语言)

#include <stdio.h> 

void QuickSort1(int *s,int left,int right)
{
	int i,j,t,pivot;	
	if(left>right)
		return;
	if(left<right)
	{
		pivot = s[left];	//基准数 
		i=left;
		j=right;
		
		while(i!=j)
		{
			while(i<j &&s[j]>=pivot) j--; 	//从右向左找第一个比基准数小的数 
			while(i<j &&s[i]<=pivot) i++;	//从左向右找第一个比基准数大的数 
			if(i<j)							//交换两数 
			{
				t=s[i];
				s[i]=s[j];
				s[j]=t;
			}
		}
		s[left] = s[i];		//基准数归位 
		s[i] = pivot;
		
		QuickSort1(s,left,i-1);
		QuickSort1(s,i+1,right);
	}	
	
}

void QuickSort2(int *s,int left,int right)
{
	int i,j,pivot;	
	if(left>right)
		return;
	if(left<right)
	{
		pivot = s[left];	//基准数 
		i=left;
		j=right;
		
		while(i!=j)
		{
			while(i<j &&s[j]>=pivot) j--; 	//从右向左找第一个比基准数小的数 
			if(i<j)
			{
				s[i]=s[j];
				i++;
			}
			while(i<j &&s[i]<=pivot) i++;	//从左向右找第一个比基准数大的数 
			if(i<j)
			{
				s[j]=s[i];
				j--;
			}
		}

		s[i] = pivot;	//基准数归位 
		
		QuickSort2(s,left,i-1);
		QuickSort2(s,i+1,right);
	}	
	
}

int main()
{
	int a[] = {8,6,12,10,2,7,3,15,9,20};
	//QuickSort1(a,0,9);
	QuickSort1(a,0,9);
	int i=0;
	for(;i<10;i++)
		printf("%d ",a[i]); 
	return 0;
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。