小编Zep*_*hyr的帖子

在 Java 中以 O(N) 而不是 O(NlogN) 构建堆

为了构建堆,我们使用 java 中的 PriorityQueue 类。有没有办法使用内置库/类直接从 O(N) 中的数组构建堆,而不是单独推送每个元素以在 O(NlogN) 中构建堆?

java heap

1
推荐指数
1
解决办法
457
查看次数

整数指针数组的大小

#include<stdio.h>
#include<conio.h>

void main()
{
  int a[5]={1,2,3,4,5};
  int (*p)[5];
  int *p1[5];
  clrscr();

  printf("%d\n",(int)sizeof(a)); // 10
  printf("%d\n",(int)sizeof(p));  //2
  printf("%d\n",(int)sizeof(p1)); //10
  getch();
}
Run Code Online (Sandbox Code Playgroud)

第一个输出是10,因为每个整数是2个字节,因此5个整数将占用10个字节.

我无法理解第3个输出是10.这里我们有指针数组,每个指针指向一个整数.我系统中指针(或地址)的大小是32位(4字节).所以输出应该是5*4 = 20,因为我们有5个指针,每个4个字节?

c++ arrays pointers

0
推荐指数
1
解决办法
113
查看次数

字符到整数指针的转换

void main()
{
 char *s="ABCDEFG";
 clrscr();

 int *ptr=(int *)s;
 printf("%c %d\n",*(ptr+1),*(ptr+1));          //OP :- C 17475
 printf("%c %d\n",*(s+1),*(s+1));              //OP :- B 66

 getch();
}
Run Code Online (Sandbox Code Playgroud)

我知道整数指针增加 2 个字节,而字符指针增加 1 个字节。这里当 int 指针增加 1 时,只打印 C(只考虑第一个字节)。是因为我们有 %c 说明符吗?

另外,我无法理解 17475 是如何作为输出打印的。在第二种情况下,66 是 B 的 ASCII 值。

有人能帮我吗?

c pointers

-1
推荐指数
1
解决办法
650
查看次数

迭代对数Big-O复杂度

我有两个疑问: -

1)是(log*n)^ n = O((logn)!)?

2)哪个更大,log(log*n)或log*(logn)?

big-o logarithm time-complexity

-2
推荐指数
1
解决办法
315
查看次数

标签 统计

pointers ×2

arrays ×1

big-o ×1

c ×1

c++ ×1

heap ×1

java ×1

logarithm ×1

time-complexity ×1