gpt4 book ai didi

c - 如何在mergeSort中将Infinity指示为哨兵卡?

转载 作者:行者123 更新时间:2023-11-30 16:18:30 25 4
gpt4 key购买 nike

我正在阅读算法简介,有一个术语“哨兵卡”,它使用 ∞ 作为 P31 处的哨兵值。我知道这意味着数组位于末尾(对于字符串,可以使用 NULL 指针指示字符串末尾)。但我不知道如何在c编程中准确实现。

假设 int 数组 int A[6] 有一些随机值,其中必须包含 -2147483648(INT_MIN)、0 和 2147483647(INT_MAX)。

Linux 平台上的 INT_MIN 和 INT_MAX 位于/usr/include/limits.h。

例如:

int A[6] = {100,0,-2147483648, -100, 2147483646 ,2147483647};

那么如何在以下伪代码(第 8 行和第 9 行)的 C 编程中将 Infinity 表示为哨兵值?

MERGE (A ,p ,q, r)
1 n1 = q - p + 1
2 n2 = r - q
3 let L[1..n1 + 1] and R[1..n2 + 1] be new arrays
4 for i = 1 to n1
5 L[i] = A[p + i - 1]
6 for j = 1 to n2
7 R[j] = A[q + j]
8 L[n1 + 1] = ∞
9 R[n2 + 1] = ∞
10 i = 1
11 j = 1
12 for k = p to r
13 if L[i] <= R[j]
14 A[k] = L[i]
15 i = i + 1
16 else A[k] = R[j]
17 j = j + 1

最佳答案

一个答案是 ∞ 是一个比数组 Max 大 1 的数字,-∞ 是一个比数组 min 小 1 的数字。并且您可以在每次调用 之前进行检查合并这些值是什么

关于c - 如何在mergeSort中将Infinity指示为哨兵卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55887371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com