1. 程式人生 > >Sort it

Sort it

行為 number name you osi %d fine positive ase

You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need.
For example, 1 2 3 5 4, we only need one operation : swap 5 and 4.

InputThe input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 1000); the next line contains a permutation of the n integers from 1 to n.OutputFor each case, output the minimum times need to sort it in ascending order on a single line.

Sample Input

3
1 2 3
4 
4 3 2 1 

Sample Output

0
6
大概意思:給有序數組裏相鄰的數字進行排序,算出排序時需要進行的最小步驟數。

 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 int a[1010];
 5 int main(){
 6     int n;
 7     while(scanf("%d",&n)!=EOF){
 8         for(int i = 0; i < n; i ++){
 9             //
scanf("%d",a[i]); 10 cin>>a[i]; 11 } 12 ll ans = 0; 13 for(int i =1; i < n; i ++){ //13到17行為冒泡排序法 14 for(int j = 0; j <n-1; j ++){ 15 if(a[j]>a[j+1]){ 16 ans++; 17 swap(a[j],a[j+1]); 18 }
19 } 20 } 21 cout << ans << endl; 22 //printf("") 23 } 24 return 0; 25 }

Sort it