P1177 【模板】快速排序(二分排序)

简介: P1177 【模板】快速排序(二分排序)

题目描述



利用快速排序算法将读入的  N 个数从小到大排序后输出。


快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)


输入格式



第 1  行为一个正整数 NN,第 2  行包含  N 个空格隔开的正整数  ai,为你需要进行排序的数,数据保证了  Ai 不超过 10^9 。


输出格式



将给定的 N  个数从小到大输出,数之间空格隔开,行末换行且无空格。


输入输出样例



输入 #1复制

1. 5
2. 4 2 4 5 1


输出 #1复制

1 2 4 4 5


说明/提示



对于  20% 的数据,有 N≤103;

对于  100% 的数据,有 N≤10^5。


#include<iostream>
using namespace std;
int a[100000];
void yyds(int n,int q)//2分法 就是不断的把比中间的数小的放在左边,大的放在右边,重复这个过程。 
{
int i=n,j=q;
int mid=a[(n+q)/2];
while(i<=j)//如果刚刚好到达中间的数就退出循环 
{
  while(a[i]<mid) i++;//找到左边比中间大的数 
  while(a[j]>mid) j--;//找到右边比中间小的数 
  if(i<=j)//可能会出现都到达中间位置 
  {
    swap(a[i],a[j]);
    i++;
    j--;
  }
}
if(n<j)yyds(n,j);//因为j在左边i在右边 
if(i<q)yyds(i,q);
}
int main()
{
  int i,m;
  cin>>m;
  for(i=1;i<=m;i++)
  {
    cin>>a[i];
  }
  yyds(1,m);
  for(i=1;i<=m;i++)
  {
    cout<<a[i]<<' ';
  }
}
相关文章
|
JavaScript 前端开发 开发者
从0开始学习JavaScript--JavaScript 表达式与运算符
JavaScript中的表达式和运算符是构建逻辑、进行计算的基础。本文将深入研究JavaScript中各类表达式,包括算术表达式、关系表达式、逻辑表达式,以及运算符的使用方法,并通过丰富的示例代码来帮助读者更全面地了解和运用这些概念。
|
数据采集 移动开发 Python
六:《智慧的网络爬虫》— 正则表达式概述
【8月更文挑战第7天】本文介绍了正则表达式的基本概念、用途,如表单验证和爬虫,以及Python中re模块的使用,包括match(),match()函数、元字符、预定义字符集、重复匹配、位置匹配、非贪婪模式和re模块的常用方法如compile(),search(),findall(),split(),sub()等。
303 1
六:《智慧的网络爬虫》— 正则表达式概述
|
域名解析 存储 缓存
域名服务器 (DNS):工作原理及其优势
【8月更文挑战第19天】
2120 0
原型图总结规范
原型图总结规范
274 0
|
存储 C#
C# | 二进制字符串(“101010101”)、字节数组(byte[])互相转换
当我们在计算机中处理数据时,经常需要将数据从一种格式转换为另一种格式。而本文的将二进制字符串转换为字节数组听起来很稀松平常但实际又不是那么常见的特殊的转换方式。 二进制字符串是由 0 和 1 组成的字符串,比如:“0111010010101000”。 字节数组常用于读取和写入二进制文件、网络通信等。
1332 0
|
存储 小程序 前端开发
带你认识微信小程序
微信小程序是一种不需要下载、安装即可使用的应用,用户只需扫一扫或搜一下即可打开。它实现了应用触手可及的梦想,降低了应用的使用门槛。微信小程序自2017年1月上线以来,已经吸引了大量开发者加入,构建了一个丰富的生态体系。
181 1
《2020高德技术年刊》电子版地址
在2021年春节即将到来之际,我们精选了几十篇高德技术的干货文章及数篇国际顶会论文,制作成了一本厚达750页+的电子书,作为新年礼物赠送给大家。
145 0
《2020高德技术年刊》电子版地址
|
存储 XML 缓存
想好怎么学 Servlet规范了嘛(二)?
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
想好怎么学 Servlet规范了嘛(二)?
|
存储 Web App开发 SQL
前端百题斩【024】——我从浏览器控制台看到了五种存储方式
前端百题斩【024】——我从浏览器控制台看到了五种存储方式
前端百题斩【024】——我从浏览器控制台看到了五种存储方式
|
算法 BI 数据库管理
动态规划之最长公共子序列求解
关于最长公共子序列(LCS) 最长公共子序列和最长公共子串是有区别的,之前我一直把它们混淆。 最长公共子串举例:假设S1={A,D,C,B,E,X,Q},S2={H,P,D,C,B,E,M,L}那么它们的最长公共子串就是{D,C,B,E}。
2694 0