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 }