2020-10-27

快速排序(记录学习进度)

1.快排:对一堆数字选取一个基准,比该数字小的全部放在左边,比该数字大的全部放在右边。最后可以得出基准的位置。然后在对两边进行相同的操作。

#include <stdio.h>
void quilkSort(int *,int ,int );


int main ()
{
	int N,i;
	scanf("%d",&N);
	int nums[N];
	for (i=0;i<N;i++)
	scanf("%d",&nums[i]);
	quilkSort(nums,0,N-1);
	
	for (i=0;i<N;i++)
	printf("%d\t",nums[i]);
}

void quilkSort(int *nums,int left,int right)
{
	int pivot=nums[right];   //选取一个基准
	int first=left,last=right;  
	if (first>=last)   //为下面的递归找一个出口
	return ;
	while (first<last)    
	{
		while (first<last && nums[first]<=pivot)    
		first++;   
		nums[last]=nums[first];
		while (first<last && nums[last]>=pivot)
		last--;
		nums[first]=nums[last];
	}
		nums[first]=pivot;
	quilkSort(nums,left,first-1);  //这个地方first-1是因为,first的下标是基准的位置,所以对左边排序的时候需要-1
	quilkSort(nums,left+1,right); //这个同上
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

小白书舍

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值