#include <stdio.h>

// 判断一个数据序列是否构成一个小根堆 int isMinHeap(int arr[], int n) { for (int i = 1; i < n; i++) { // 如果当前节点的值小于其父节点的值,则不是小根堆 if (arr[i] < arr[(i - 1) / 2]) { return 0; } } return 1; }

int main() { // 测试数据 int arr1[] = {2, 3, 4, 6, 8, 9, 10}; int arr2[] = {4, 6, 8, 2, 3, 9, 10};

int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);

if (isMinHeap(arr1, n1)) {
    printf("arr1 is a min heap.\n");
} else {
    printf("arr1 is not a min heap.\n");
}

if (isMinHeap(arr2, n2)) {
    printf("arr2 is a min heap.\n");
} else {
    printf("arr2 is not a min heap.\n");
}

return 0;
试写一个C语言算法判断一个数据序列是否构成一个小根堆

原文地址: http://www.cveoy.top/t/topic/ibF5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录