热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:AcWing785.快速排序

本文由编程笔记#小编为大家整理,主要介绍了AcWing785.快速排序相关的知识,希望对你有一定的参考价值。题目描述
本文由编程笔记#小编为大家整理,主要介绍了AcWing 785. 快速排序相关的知识,希望对你有一定的参考价值。


题目描述

```

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

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

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

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

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

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

数据范围
1≤n≤100000
输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5
```

问题分析
1≤n≤100000,可以使用nlogn及以下复杂度的算法,如快速排序、归并排序等。本题介绍快速排序方案:
技术图片

 

 


技术图片

 

 

技术图片

 


int x = a[(L+R)/2]; //下取整,所以最后选j
int i = L-1, j = R+1;
while(i < j)
{
//dowhile中不能放等号,如果相等也前进或者后退,会不可阻挡,发生越界。
do ++ i;while(a[i] < x);
do -- j;while(a[j] > x);
if(i < j) swap(a[i], a[j]);
}

 

上面代码是实现步骤1的核心代码,解释如下:
技术图片

 

 

技术图片

 

技术图片

 

技术图片

 


// 学习更多算法,获取acwing激活码,欢迎关注公众号AcWing代理
#include <iostream>
#include

using namespace std;
const int N = 1e5+5;
int a[N];
void quick_sort(int L, int R)
{
if(L >= R) return ;
int x = a[(L+R)/2]; //下取整,所以最后选j
int i = L-1, j = R+1;
while(i < j)
{
//dowhile中不能放等号,如果相等也前进或者后退,会不可阻挡,发生越界。
do ++ i;while(a[i] < x);
do -- j;while(a[j] > x);
if(i < j) swap(a[i], a[j]);
}
quick_sort(L, j);
//下取整,所以这里取j
quick_sort(j+1, R);
}
int main()
{
int n;
cin
>> n;
for(int i = 0; i i)
cin
>> a[i];
quick_sort(
0, n-1);
for(int i = 0; i i)
cout <" ";
return 0;
}

====学习更多算法,获取acwing激活码,欢迎关注公众号AcWing代理====















推荐阅读
  • 编程解析:CF989C 花朵之雾 (构造算法)
    本文深入探讨了CF989C '花朵之雾'问题的构造算法,提供了详细的解题思路和代码实现。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 深入理解iOS中的链式编程:以Masonry为例
    本文通过介绍Masonry这一轻量级布局框架,探讨链式编程在iOS开发中的应用。Masonry不仅简化了Auto Layout的使用,还提高了代码的可读性和维护性。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • Hanks博士是一位著名的生物技术专家,他的儿子Hankson对数学有着浓厚的兴趣。最近,Hankson遇到了一个有趣的数学问题,涉及求解特定条件下的正整数x,而不使用传统的辗转相除法。 ... [详细]
  • OpenCV中的霍夫圆检测技术解析
    本文详细介绍了如何使用OpenCV库中的HoughCircles函数实现霍夫圆检测,并提供了具体的代码示例及参数解释。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 该问题描述了以不同价格购买三种类型的鸡(公鸡、母鸡和小鸡),使用100元恰好购买100只鸡的不同组合。具体而言,每只公鸡价值5元,每只母鸡价值3元,而每三只小鸡价值1元。问题是,如何用100元购买100只鸡,并找出所有可能的公鸡、母鸡和小鸡的组合。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
author-avatar
常思
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有