蘑菇街2017春招笔试

 

现在有一个n个整数的序列,交换两个相邻的数的位置直到整个序列按照升序排列,
那么将整个序列排好需要交换多少次?
例如 1,2,3,5,4 只需要交换一次即可。

第一行输入一个正整数n(n<100),表述数字序列元素个数,占一行;
接下来一行输入从1到n的n个整数序列,中间用空格隔开

输入:
4
4 3 2 1
输出:
6

 1 /*************************************************************************
 2     > File Name: SpecialExchange.c
 3     > Author: Juntaran
 4     > Mail: Jacinthmail@gmail.com
 5     > Created Time: 2016年04月24日 星期日 19时26分01秒
 6  ************************************************************************/
 7 
 8 #include <stdio.h>
 9 #define BufferSize 1000
10 
11 int SpecialExchange()
12 {
13     int a[BufferSize];
14     int n;
15     scanf("%d", &n);
16 
17     int i = 0;
18     for( i=0; i<n; i++ )
19     {
20         scanf("%d", &a[i]);
21     }
22 
23     int count = 0;
24     int temp = 0;
25 
26     int j = 0;
27     for( i=1; i<n; i++ )
28     {
29         if( a[i] < a[i-1] )
30         {
31             int  t =  a[i];
32             for( j = i-1; j>=0 && a[j]>t; j-- )
33             {
34                 temp = a[j+1];
35                 a[j+1] = a[j];
36                 a[j] = temp;
37                 count ++;
38 
39             }
40         }
41     }
42 
43     printf("%d\n", count);
44     return count;
45 }
46 
47 int main()
48 {
49     SpecialExchange();
50     return 0;
51 }

 

posted @ 2016-04-24 22:36  Juntaran  阅读(538)  评论(0编辑  收藏  举报