预备役2022.1.17学习总结9

今天 看书(大话数据结构),做总结:

 

 

 

 

 

 

 

 

 

 

 写了两个题,是之前没写出来的,根据别人的提示然后改了过了。

快排

刚开始我按照啊哈算法上面写只对了一点,我觉得非常的奇怪,然后问了别人才知道模板的基准数都是固定的没变,如果把最大数放到第一个就没有意义了,为了防止这种情况发生,就随机用中心值做基准值。

AC代码:

#include<stdio.h>
int a[300000],n;
void quicksort(int l,int r)
{
	int i,j,temp,t;
	if(l>r) return;
	temp=a[(l+r)/2];//用中心值做基准数 
    i=l;j=r;
    while(i<=j)
    {
    	while(a[j]>temp)//从右往左 
    	 j--;
    	 while(a[i]<temp)//左往右 
    	 i++;
    	 if(i<=j)//交换两个数的位置 
    	 {
    	 	t=a[i];
    	 	a[i]=a[j];
    	 	a[j]=t;
    	 	i++;
    	 	j--;
    	 }
	}
	if(l<j)  quicksort(l,j);//递归继续处理左边的 
	if(i<r) quicksort(i,r);//递归继续处理右边的 
}
int main()
{
	int i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	  scanf("%d",&a[i]);
	  quicksort(1,n);
	  for(i=1;i<=n;i++)
	    printf("%d ",a[i]);
	    return 0;
}

明天开始刷二叉树的题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值