Out of Sorts
题面描述:
对于给出的数据若是冒泡排序一次,便会打印“moo”。
求会打印几次“moo”。
题目分析:
思维题,
根据冒泡排序的原理:每次找一个最大的数放到后面,其他的数被动前移或不变。
例如:
0 2 9 3 8 5 4 7
冒泡一次变成0 2 3 8 5 4 7 9(此时 3 6 5 4 7 各向前移动了一位)
冒泡两次变成0 2 3 5 4 7 8 9(此时 5 4 7 各向前移动了一位)
冒泡三次变成0 2 3 4 5 7 8 9(此时 4 向前移动了一位)
观察可以发现冒泡排序的次数就是向前移动的最大位数 ,
而“moo”的次数是 3+1=4 次,即是答案。
代码:
#include<algorithm> #include<stdio.h> #include<iostream> #include<string.h> #include<queue> #include<vector> using namespace std; long long ans=-1,i,n; struct num{ long long num,pos; }a[100005]; bool cmp(num a,num b){ if(a.num!=b.num) return a.num<b.num; else return a.pos<b.pos; } int main(){ cin>>n; for(i=1;i<=n;i++) cin>>a[i].num,a[i].pos=i; sort(a+1,a+1+n,cmp); for(i=1;i<=n;i++) ans=max(ans,a[i].pos-i+1); cout<<ans; }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15645866.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步