编写c++代码实现随机生成100个整数,构造一个大根堆。
时间: 2023-06-04 22:04:47 浏览: 101
好的,我可以回答这个问题。以下是 C 代码实现随机生成100个整数,构造一个大根堆的示例代码:
```C
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 100
void adjustHeap(int arr[], int i, int size)
{
int left_child = 2 * i + 1;
int right_child = 2 * i + 2;
int largest = i;
if (left_child < size && arr[left_child] > arr[largest]) {
largest = left_child;
}
if (right_child < size && arr[right_child] > arr[largest]) {
largest = right_child;
}
if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
adjustHeap(arr, largest, size);
}
}
void buildHeap(int arr[], int size)
{
for (int i = size / 2 - 1; i >= 0; i--) {
adjustHeap(arr, i, size);
}
}
int main()
{
int arr[MAX_SIZE] = {0};
srand((unsigned)time(NULL));
for (int i = 0; i < MAX_SIZE; i++) {
arr[i] = rand() % 1000;
printf("%d ", arr[i]);
}
printf("\n");
buildHeap(arr, MAX_SIZE);
for (int i = 0; i < MAX_SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这段代码会先生成100个0到999的随机整数,然后构造一个大根堆,最后输出堆中元素。
阅读全文