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分)--排序的主要内容,如果未能解决你的问题,请参考以下文章