列表

详情


NC206162. xby的排序问题

描述

xby也学习算法与数据结构课程,老师讲了好多种排序算法,上课的时候老师提了一个小问题,给定一个长度为的序列,让大家用冒泡排序算法进行排序,这个简单的问题立马被解决了,老师见状又提了一个问题,问该序列利用冒泡排序,外层循环次数是多少?  ---冒泡排序算法 使用 题设伪代码

// 伪代码 flag= false while ( !flag ):    flag= true    for i = 0 to N-2:       if A[i+1] < A[i]:          swap A[i], A[i+1]          flag= false // 

输入描述

第一行一个整数,第二行个整数表示序列

输出描述

一行一个整数,表示答案。

示例1

输入:

5
1 5 3 8 2

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 22ms, 内存消耗: 1016K, 提交时间: 2020-07-13 15:54:17

#include<cstdio>
#include<algorithm>

using namespace std;
const int MAXN=1e5+5;
pair<int,int> x[MAXN];
int n;

int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; ++i)
        scanf("%d",&x[i].first),x[i].second=i;
    sort(x+1, x+n+1);
    int ans=0;
    for(int i=1; i<=n; ++i)
        ans=max(ans,x[i].second-i);
    printf("%d\n",ans+1);
    return 0;
}

C++(clang++11) 解法, 执行用时: 36ms, 内存消耗: 1144K, 提交时间: 2021-03-19 11:34:45

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n;
pair<int,int>dp[N];
int main()
{
	cin>>n;
	for(int i=0;i<n;i++) cin>>dp[i].first,dp[i].second=i;
	sort(dp,dp+n);
	int ans=-1;
	for(int i=0;i<n;i++){
		ans=max(ans,dp[i].second-i);
	}
	cout<<ans+1<<endl;
}

上一题