快速排序
  6DMaaPzJglxt 2023年12月05日 70 0


快速排序

介绍:通过多次划分实现操作
思想:每一趟选择当前说有子序列中的一个关键字(通常是第一个)作为枢轴,将子序列中比枢轴小的移到枢轴前边,比枢轴大的移到枢轴后边;当本趟所有子序列都被枢轴以规则划分完毕后会得到一组更短的子序列,它们成为下一趟划分的初始序列集

int quicksort(int R[],int low,int high)
{
	int temp;
	int i=low,j=high;
	if(low<high)
	{
		temp=R[low];
		while(i<j)
		{
			while(j>i&&R[j]>=temp)
			{
				--j;//右往左扫描 ,找第一个小于temp的 
			}
			if(i<j)
			{
				R[i]=R[j];//第一个比temp小的放在temp的左边 
				++i;//低位i后移1位 
			} 
			while(i<j&&R[i]<temp)
			{
				++i;//从左往右扫描 ,找到第一个比temp大的 
			}
			if(i<j)
			{
				R[j]=R[i];//第一个比temp大的放在temp右边 
				--j;//高位j前移1位 
			} 
		}
		R[i]=temp;
		quicksort(R,low,i-1);
		quicksort(R,i+1,high); 
		//直到i遇到j之后结束,划分为不同的分区
	}
	return 1;
}

分治法: 快速排序采用分为治之。
最坏的时间复杂度O(n2) ——这里是平方
最好的时间复杂度O(n*long2n) ——这是以2为底取n的对数


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月05日 0

暂无评论

推荐阅读
6DMaaPzJglxt