快速排序

这篇博客介绍了如何使用快速排序算法对整数数组进行排序,提供了详细的算法实现代码,并附带了一个简单的示例输入和输出。文章引用了《啊哈!算法》作为参考,旨在帮助读者理解并掌握快速排序的基本思路和操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用快速排序算法将读入的 NN 个数从小到大排序后输出,请勿使用std::sort

输入格式

第一行一个整数 n (1≤n≤105)n (1≤n≤105)。

第二行 nn 个整数 ai (1≤ai≤109)ai (1≤ai≤109)。

输出格式

输出一行,为 aiai 排序后的结果。

Sample Input

5
4 7 1 4 6

Sample Output

1 4 4 6 7

思路:阿久是参考《啊哈!算法》上的  

实现代码:

#include<stdio.h>
int a[100010];
void quicksort(int l,int r)
{
	int i,j,t,temp;
    if(l>r)
       return;
    temp=a[l]; //基准数
    i=l;
    j=r;
    while(i!=j)
    {
        //要先从右边开始找!! 
        while(a[j]>=temp && i<j)
        j--;
        while(a[i]<=temp && i<j)
        i++;
        //交换两个数在数组中的位置
        if(i<j)
        {
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
    //最终将基准数归位
    a[l]=a[i];
    a[i]=temp;
   
    quicksort(l,i-1);
    quicksort(i+1,r);

}
int main()/*阅读代码从这里开始,养成良好习惯哈*( ̄▽ ̄)~*/
{
	int n,i; 
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]); 
	}
	quicksort(0,n-1);/*把我输入的数在函数里面排一下*/
	for(i=0;i<n;i++)
	{
		printf("%d ",a[i]);
	}
	return 0;
}

冒泡排序应用的链接:https://blog.youkuaiyun.com/with_wine/article/details/113802717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值