基础排序算法——快速排序

 

 

#include<stdio.h>
void QuickSort(int a[],int left,int right)
{
	//当只有一个元素 不用再继续了,这里中断迭代递归关键点 
	if(left>=right)
	return ;
	
	int i=left;
	int j=right;
	int base=a[left];  //先把左边第一个数作为基准数,拿出来比较
	
//	下面进行交换 ,大的数放到base右边,小的放左边,相等的选固定一边就行 
	while(i!=j)
	{
		//先从右边寻求第一个比base小的数 
		while(j>i&&a[j]>=base)
			j--;
		a[i]=a[j];  //如果找到就放在i的位置(上一个位置),这里不理解可以用  5 3 9 7 2 6 实现以下 
		
//		再从左边寻求第一个比base大的数
		while(j>i&&a[i]<base) 
			i++;
		a[j]=a[i];
		
	} 
	
//	到这里其实i与j是相等的,走到了中间了。这时把base放到这个位置
	a[i]=base;
	
//	分别递归 两边的数据进行排序 直到每个部分都是一个元素,即各个部分有序
	  QuickSort( a,left,i-1);
	  QuickSort( a,i+1,right);
}

int main()
{
	
	int i;
	int a[10]={42,54,94,10,100,58,34,63,9,74};
	QuickSort(a,0,9);
	
	for(i=0;i<10;i++)
	printf("%d,",a[i]);
	
	return 0;
}

 

全部评论

相关推荐

粗心的熊熊求求offer:什么内容都没有还弄两页
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 14:14
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务