如何做企业网站规划,南宁优化网站网络服务,定制旅游网站建设方案,公司资料模板给定一个无序的数列#xff0c;由32位整数组成的#xff0c;序列长度可达500000#xff0c;现在通过不断的两两交换#xff0c;把这个序列排成由小到大的有序序列#xff0c;问交换的次数是多少。 1 #includestdio.h2 #includestdlib.h3 #define NN 50000… 给定一个无序的数列由32位整数组成的序列长度可达500000现在通过不断的两两交换把这个序列排成由小到大的有序序列问交换的次数是多少。 1 #includestdio.h2 #includestdlib.h3 #define NN 5000054 5 int a[NN];6 __int64 count;7 8 void Merge(int data[], int l, int m, int r)9 {
10 int i l;
11 int j m 1;
12 int k 0;
13 int *pd;
14 pd (int*)malloc((r-l1) * sizeof(int));//归并
15
16 while (im jr)
17 {
18 if (data[i] data[j])
19 {
20 pd[k] data[i];
21 }
22 else
23 {
24 pd[k] data[j];
25 count m - i 1;
26 }
27 }
28 while (i m)
29 {
30 pd[k] data[i];
31 }
32 while (jr)
33 {
34 pd[k] data[j];
35 }
36 for (il, k0; ir; i, k)
37 {
38 data[i] pd[k];
39 }
40 free(pd);
41 //pd NULL;
42 }
43
44 void MergeSort(int data[], int l, int r)
45 {
46 if (l r)
47 {
48 int m (l r) / 2;
49 MergeSort(data, l, m);
50 MergeSort(data, m1, r);
51 Merge(data, l, m, r);
52 }
53 }
54
55 int main(void)
56 {
57 int n;
58 //int i;
59 while (scanf(%d, n), n)
60 {
61 count 0;
62 for (int i0; in; i)
63 {
64 scanf(%d, a[i]);
65 }
66 MergeSort(a, 0, n-1);
67 printf(%I64d\n, count);
68 }
69 return 0;
70 } 转载于:https://www.cnblogs.com/bucuo/archive/2012/11/15/2772157.html