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); //这个同上
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值