7-38 寻找大富翁 (25分)--排序

Posted 2020r

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-38 寻找大富翁 (25分)--排序相关的知识,希望对你有一定的参考价值。

多提交几次就不超时了(#滑稽)

 1 #include<iostream>
 2 using namespace std;
 3 long  int a[1000005];
 4 long  int N;
 5 inline void swap(long int* a, long int* b)
 6 {
 7     int temp = *a;
 8     *a = *b;
 9     *b = temp;
10 }
11 inline void percdown(long  int a[], long int r, long int N)
12 {
13     long int child;
14     long int temp;
15     
16     temp = a[r]; 
17     for (; 2 * r + 1 < N; r = child)
18     {
19         child = 2 * r + 1;
20         if (2 * r + 2 < N && a[2 * r + 2] < a[2 * r + 1]) 
21             child++;
22         if (a[child] < temp&& child < N) 24             a[r] = a[child];
25         }
26         else
27             break;
28     }
29     a[r] = temp; 
30 }
31 
32 void Heap_Sort(long  int a[])
33 {
34     
35     for (long int i = N / 2; i >= 0; i--)
36     {
37         percdown(a, i, N);
38     }
39    
40     for (long int i = N - 1; i > 0; i--) 42         swap(&a[0], &a[i]);
43         percdown(a, 0, i);
44     }
45 }
46  int main()
47 {
48     long  int M;
49     cin >> N >> M;
50     if(N<M)M=N;
51     for (long  int i = 0; i < N; i++)
52     {
53         cin >> a[i];
54     }
55     Heap_Sort(a);
56     for (long  int i = 0; i < M; i++)
57     {
58         printf("%ld",a[i]);
59             if (i != M - 1)printf(" ");
60     }
61     return 0;
62 }

 

以上是关于7-38 寻找大富翁 (25分)--排序的主要内容,如果未能解决你的问题,请参考以下文章

排序 专题讨论

排序 专题讨论

HDU 3785 寻找大富翁

1034.寻找大富翁

ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 I: 寻找大富翁

1030 完美数列 (25 分)(滑动窗口)