2019.08.07筆試題1:神州數(shù)碼

2019.08.07筆試題1:

有一個N個數(shù)的數(shù)組,他想將數(shù)組從小到大 排好序,但是萌萌的度度熊只會下面這個操作:
任取數(shù)組中的一個數(shù)然后將它放置在數(shù)組的最后一個位置。
問最少操作多少次可以使得數(shù)組從小到大有序?

輸入描述:
首先輸入一個正整數(shù)N,接下來的一行輸入N個整數(shù)。(N <= 50, 每個數(shù)的絕對值小于等于1000)
輸出描述:
輸出一個整數(shù)表示最少的操作次數(shù)。
輸入例子1:
4
19 7 8 25
輸出例子1:
2

個人思路:

思路就是,原先數(shù)組跟有序數(shù)組相比較,最小的情況是操作幾次,不考慮數(shù)組的長度,只考慮需要把數(shù)組插入數(shù)組最后一個位置幾次?
其實(shí)我個人的看法就是:找到多少個元素排在最小元素的前面,再然后就是找到多少個元素排在第二個元素前面,以此類推、

package niuke1;

import java.util.Arrays;
import java.util.Scanner;

public class Main{
     
    public static void main (String args[]){
 
    Scanner scan = new Scanner(System.in);
 
    int n = scan.nextInt();
// 原來數(shù)組
    int[] arr = new int[n];
// 排好序的數(shù)組
    int[] sortArr = new int[n];
 
    for(int i = 0; i < n;  i++){
 
    arr[i] = scan.nextInt();
 
    sortArr[i] = arr[i];
 
    }
 
    Arrays.sort(sortArr);
// 意味著多少個元素不需要挪
    int count = 0;
 
    int j = 0;
 
    for(int i = 0;i < n; i++){
 
    if(arr[i] == sortArr[j]){
// 因?yàn)閖=0,sortArr[j]一開始是在原先的數(shù)組找對應(yīng)的count
    count++;
 
    j++;
// 找到對應(yīng)的元素在之前的位置,sortArr下一位就是第二位比較小的數(shù)
    }
 
    }
// 總數(shù)-減去不需要挪動的,因?yàn)轭}目本身要求是任取數(shù)字,而且要求是最少次數(shù)操作
    System.out.println(n - count);
 
    }
 
     
 
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容