摩拜 [程式設計題] 排序次數
阿新 • • 發佈:2018-11-11
小摩有一個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(); } }