小摩有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的小摩只会下面这个操作:
任取数组中的一个数然后将它放置在数组的最后一个位置。
问最少操作多少次可以使得数组从小到大有序?
输入描述:
首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)输出描述:
输出一行操作数输入例子1:
4
19 7 8 25输出例子1:
2例子说明1:
19放到最后,25放到最后,两步完成从小到大排序import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] array=new int[n];
for(int i=0;i<n;i++){
array[i]=in.nextInt();
}
int len=array.length;
int cnt=0;
boolean flag=true;
do{
int min=999999999;
int index=-1;
for(int i=len-1;i>0;i--){
if (array[i - 1] > array[len-1]) {
if(array[i-1]<min){
min=array[i-1];
index=i-1;
}
}
}
if(index!=-1){
int t = array[index];
for(int j=index+1;j<len;j++){
array[j-1]=array[j];
}
array[len-1]=t;
cnt++;
int i;
for(i=1;i<len;i++) {
if(array[i-1]>array[i]){
flag=false;
break;
}
}
if(i==len){
flag=true;
}
}
}while (!flag);
System.out.println(cnt);
// for(int i=0;i<len;i++){
// System.out.println(array[i]);
// }
in.close();
}
}