博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1101 Quick Sort
阅读量:6786 次
发布时间:2019-06-26

本文共 813 字,大约阅读时间需要 2 分钟。

题意:给出一个数字序列,问哪几个数字符合快排中pivot元素的性质。

思路:以快排为背景,实属逻辑题。pivot左边的值比它小,右边的值比它大。定义数组left[]和right[],其中left[i]表示区间[0~i-1]中的最大值,right[i]表示区间[i+1,n-1]的最小值,而符合条件的pivot只要满足data[i]>left[i] && data[i]<right[i]即可。在寻找符合条件的pivot之前要先把left[]和right[]预处理好,left[]的更新从左往右,可以在输入数据时同步更新,而right[]需要从右往左进行更新。

代码:

#include 
#include
using namespace std;const int maxn=100005;int data[maxn],left[maxn],right[maxn];set
ans;int main(){ int n,maxLeft=-1,minRight=1000000010; scanf("%d",&n); for(int i=0;i
maxLeft) maxLeft=data[i]; } for(int i=n-1;i>=0;i--){ right[i]=minRight; if(data[i] < minRight) minRight=data[i]; } for(int i=0;i
left[i] && data[i]

 

转载于:https://www.cnblogs.com/kkmjy/p/9594386.html

你可能感兴趣的文章
怎样将PPT文件转换为Word文档精美ppt模板下载
查看>>
ARM编辑、编译工具
查看>>
数字签名
查看>>
centos7安装docker镜像源管理工具harbor
查看>>
vim工具的编辑模式及命令模式
查看>>
DevExpress v17.2新版亮点——Data Access
查看>>
Java Script 第七节课 Java Script的逻辑运算符的例子
查看>>
CSS 3 伪类选择器
查看>>
swfit学习函数
查看>>
UML状态机
查看>>
Java过滤器,SpringMVC拦截器之间的一顺序点关系
查看>>
决心书
查看>>
linux系统管理之存储管理
查看>>
组播RPF 逆向路径转发 实验原理
查看>>
Centos 定时重启 Tomcat
查看>>
java i++
查看>>
linux运维基础篇 unit10
查看>>
linux运维基础篇 unit12
查看>>
俯身倾耳以请
查看>>
程序猿们_你是从头学起_还是半路出家的
查看>>