Sort it
阿新 • • 發佈:2017-07-07
行為 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.
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