首页 > 编程语言 > 详细

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

时间:2015-02-06 01:55:58      阅读:275      评论:0      收藏:0      [点我收藏+]
#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;
}

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

原文:http://blog.csdn.net/huolang_vip/article/details/43546921

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!