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
31 2 34 4 3 2 1
Sample Output
06 大概意思:给有序数组里相邻的数字进行排序,算出排序时需要进行的最小步骤数。
1 #include2 #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 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 }