008.AcWing 785. 快速排序(003)

简介: 这题考察了快排的实现,我之前写过一篇博客总结了八大排序☞《详解八大排序》

一,知识点

这题考察了快排的实现,我之前写过一篇博客总结了八大排序☞《详解八大排序》


二, 题目(简单)

给定你一个长度为 n的整数数列。


请你使用快速排序对这个数列按照从小到大进行排序。


并将排好序的数列按顺序输出。


输入格式


输入共两行,第一行包含整数 n。


第二行包含 n个整数(所有整数均在 1∼109范围内),表示整个数列。


输出格式

输出共一行,包含 n 个整数,表示排好序的数列。


数据范围

1≤n≤100000



输入样例:

5

3 1 2 4 5



输出样例:

1 2 3 4 5


三,思路

总体思路:选定一个key,然后把比key小的放到key左边,比key大的放在key的右边

怎么选key?

为了防止恰是逆序的情况,我们可以在数组中随机取值,或者在第一个元素、最中间一个元素、最后一个元素中选择中间值。

当然还有其他的方式,但是只要可以减小碰到极端情况的概率即可。在这里我是直接取中间一个元素作key。

怎么把比key小的放在左边,大的放在右边呢?

有几种方式可以看我在开头说的那篇文章里有介绍,这里所说的是其中一种:定义两个指针,指针一从左至右找到比key大的就停下,指针二从右至左找到比key小的就停下,然后交换两个元素,直至两个指针相遇,这样到最后我们就确定了key的位置。

递归

四,AC代码

#include<iostream>
using namespace std;
int nums[1000010];
void quiksort(int nums[],int left,int right)
{
    if(left>=right)return;
    int index=nums[(left+right)/2];
    int l=left-1,r=right+1;
    while(l<r)
    {
        do l++;while(index>nums[l]);
        do r--;while(index<nums[r]);
        if(l<r)swap(nums[l],nums[r]);
    }
    quiksort(nums,left,r);
    quiksort(nums,r+1,right);
}
int main()
{   
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;++i)
    {
        scanf("%d",&nums[i]);
    }
    quiksort(nums,0,n-1);
    for(int j=0;j<n;++j)
    {
        printf("%d ",nums[j]);
    }
    return 0;
}


五,小结


这题属于难者不会、会者不难,主要考察了快速排序的实现,没有其他的运用,所以属于简单题。

相关文章
|
3天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1301 3
|
3天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
615 3
|
4天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
10天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
732 5
|
3天前
|
人工智能 自然语言处理 安全
阿里云万小智AI建站:基础版、标准版、企业版主要功能及价格对比和选择参考
阿里云万小智 AI 建站是一款基于 AI 驱动的自助建站产品,无需代码基础,通过可视化拖拽与 AI 对话即可快速构建高性能、多语言、安全合规的网站。系统深度集成阿里云 ECS、RDS、OSS、CDN、SLB 与 Web 应用防火墙,保障高可用性、数据安全与全球访问速度。其提供多个版本,精准匹配从个人工作室到中大型企业的差异化需求。
243 167