首页 > 试题广场 >

小Q的排序

[编程题]小Q的排序
  • 热度指数:4609 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解

小Q在学习许多排序算法之后灵机一动决定自己发明一种排序算法,小Q希望能将n个不同的数排序为升序。小Q发明的排序算法在每轮允许两种操作:

1、 将当前序列中前n-1个数排为升序

2、 将当前序列中后n-1个数排为升序

小Q可以任意次使用上述两种操作,小Q现在想考考你最少需要几次上述操作可以让序列变为升序。


输入描述:
输入包括两行,第一行包括一个正整数n(3≤n≤10^5),表示数字的个数

第二行包括n个正整数a[i](1≤a[i]≤10^9),即需要排序的数字,保证数字各不相同。


输出描述:
输出一个正整数,表示最少需要的操作次数
示例1

输入

6
4 3 1 6 2 5

输出

2
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    max,min:=0,1000000001
    arr:=make([]int,n)
    for i:=0;i<n;i++{
        fmt.Scan(&arr[i])
        if arr[i]>max{
            max=arr[i]
        }
        if arr[i]<min{
            min=arr[i]
        }
    }
    if arr[n-1]==max||arr[0]==min{
        fmt.Print(1)
        return
    }
    fmt.Print(2)
}

发表于 2023-06-04 14:40:35 回复(0)