列表

详情


NC21803. 牛牛的排序

描述

牛牛刚学完排序,他准备拿n个互不相同的数一展身手,但是他发现现实中的排序与课堂里的排序不一样

每次他只能对连续的n-1个数进行从小到大的排序
请问牛牛最少需要几次排序能将所有的数排成有序的

输入描述

第一行先输入一个整数n (3 ≤ ≤ 50)
第二行输入n个整数范围在1到1000以内

输出描述

输出一个整数

示例1

输入:

4
2 6 8 5

输出:

1

示例2

输入:

6
4 3 1 6 2 5

输出:

2

示例3

输入:

5
50 20 30 40 10

输出:

3

原站题解

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

C++(clang++11) 解法, 执行用时: 15ms, 内存消耗: 504K, 提交时间: 2020-10-23 18:23:57

#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL n,k;
LL a[51],c[51];
int main(){
	cin>>n;
	for(LL i=1;i<=n;i++)
	{
	cin>>a[i];
	c[i]=a[i];
}
	sort(a+1,a+1+n);
	for(LL i=1;i<=n;i++)
	{
		if(c[i]==a[i])
		k++;
	}
	if(k==n)
	cout<<"0";
	else if(c[1]==a[1]||c[n]==a[n]) cout<<"1";
	else if(a[1]==c[n]&&a[n]==c[1]) cout<<"3";
	else cout<<"2";
}

pypy3 解法, 执行用时: 125ms, 内存消耗: 25848K, 提交时间: 2022-01-03 09:45:52

n = int(input())
List = [int(i) for i in input().split()]
List2 = List.copy()
List2.sort()
if List == List2:
    print(0)
else:
    min = List2[0]
    max = List2[-1]
    if List[0] == min or List[-1] == max:
        print(1)
    else:
        if List[0] == max and List[-1] == min:
            print(3)
        else:
            print(2)
    

Python3 解法, 执行用时: 44ms, 内存消耗: 4592K, 提交时间: 2023-04-11 17:22:57

n = int(input())
value = list(map(int,input().split()))
value_sort = sorted(value)
if value == value_sort:print(0)
elif value[0] == value_sort[0] or value[-1] == value_sort[-1]:print(1)
elif value[-1] == value_sort[0] and value[0] == value_sort[-1]:print(3)
else:print(2)

上一题