[程式設計題] 有趣的排序
阿新 • • 發佈:2019-02-14
時間限制:1秒
空間限制:32768K
度度熊有一個N個數的陣列,他想將陣列從大到小排好序,但是萌萌的度度熊只會下面這個操作:任取陣列中的一個數然後將它放置在陣列的最後一個位置。
問最少操作多少次可以使得陣列從小到大有序?
輸入描述:
首先輸入一個正整數N,接下來的一行輸入N個整數。(N <= 50, 每個數的絕對值小於等於1000)
輸出描述:
輸出一個整數表示最少的操作次數。
輸入例子:
4 19 7 8 25
程式碼如下:
#include <iostream>
using namespace std;
#define MAX_NUM 50
int main(){
int N;
cin >> N;
int num[MAX_NUM];
int sortnum[MAX_NUM];
for (int i = 0; i < N; i++){
cin >> num[i];
sortnum[i] = num[i];
}
for (int i = 0; i < N; i++){
for (int j = i + 1; j < N; j++){
if (sortnum[i]>sortnum[j]){
int temp = sortnum[i];
sortnum[i] = sortnum[j];
sortnum[j] = temp;
}
}
}
int count = 0;
for (int i = 0; i < N; i++){
if (num[i] == sortnum[count])
count++;
}
cout << N - count;
return 0;
}
*從小到大排序,在未排序陣列中從第一個開始找,找完整個陣列,然後找到幾個,則幾個不用動。