码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-06 01:58:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:排序   快排   c语言   算法   quicksort   

#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语言)

标签:排序   快排   c语言   算法   quicksort   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!