排序算法之快速排序算法

快速排序算法

快速排序算法和冒泡排序算法都属于交换排序算法,其中快速排序算法可以看做是冒泡排序算法的升级版。

快速排序算法的思想:在一列需要排序的数中,首先随机选一个基准数,一般选开始元素。这里我们定义两个变量i和j,我们给i,j取个好听名字,称为赶路人。i,j赶路人分别从最左边和最右边相向赶路。j从最右边的位置开始,若找到一个数比基准数小,就停止。然后i从最左边的位置开始,若找到一个数比基准数大,就停止。然后把i,j当前位置对应的值互换。然后i,j两点继续“赶路”,按照上面的模式,当i和j重复了,就停止赶路。此时在把i对应的值和开始设置的基准数互换,这就找到了开始时基准数的真正位置,此时保证了基准数右边的值不小于基准数,左边的数不大于基准数。其次,把基准位置两边的数,按照上面的规则进行下去,最后一直递归下去,最后就实现了快速排序。

void quicksort( int num[],int begin ,int end)
{
	int temp = num[begin];//随机的基准点
	int i = begin;
	int j = end;
	if (begin >= end)return;
	while(i!=j)
	{
		while(num[j] >= temp && i < j)j--;
		while(num[i] <= temp && i < j)i++;
		if(i < j)
		{
			int t = num[j];
			num[j] = num[i];
			num[i] = t; 

		}
	}
	num[begin] = num[i];
	num[i] = temp;

	quicksort( num,begin,i - 1);
	quicksort( num,i + 1,end);
}

int main()
{
	int a[] ={110,23,56,7,2,5,1,56,90,11,24,5,7,89,12,34,5,99};
	quicksort(a,0,17);
	for(int i = 0;i < 18;i++)  printf("%d ",a[i]); 
    getchar();
    return 0; 
}


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值