小编ord*_*ary的帖子

为什么DFS和BFS O(V + E)的时间复杂度

BFS的基本算法:

set start vertex to visited

load it into queue

while queue not empty

   for each edge incident to vertex

        if its not visited

            load into queue

            mark vertex
Run Code Online (Sandbox Code Playgroud)

所以我认为时间的复杂性将是:

v1 + (incident edges) + v2 + (incident edges) + .... + vn + (incident edges) 
Run Code Online (Sandbox Code Playgroud)

v顶点1到哪里n

首先,我说的是正确的吗?其次,这是怎样的O(N + E),直觉为什么会非常好.谢谢

algorithm graph-theory breadth-first-search time-complexity

121
推荐指数
6
解决办法
14万
查看次数

C程序检查小与大端

可能重复:
C宏定义确定大端或小端机器?

int main()
{
  int x = 1;

  char *y = (char*)&x;

  printf("%c\n",*y+48);
}
Run Code Online (Sandbox Code Playgroud)

如果它是小端,它将打印1.如果它是大端,它将打印0.这是正确的吗?或者将char*设置为int x始终指向最低有效位,而不管字节顺序如何?

c byte endianness

60
推荐指数
4
解决办法
14万
查看次数

在线和离线算法有什么区别?

这些术语在我的数据结构教科书中使用,但解释非常简洁且不清楚.我认为这与算法在每个计算阶段有多少知识有关.

(请不要链接到维基百科页面:我已经阅读过了,我仍在寻找澄清.如果我十二岁和/或一个例子的解释会更有帮助.)

algorithm data-structures

36
推荐指数
2
解决办法
1万
查看次数

如何测试计算机每秒可以执行的指令数量?

有没有快速/简单的方法来做到这一点(至少粗略估计)?

我是基准测试算法,我认为知道我的计算机执行指令的绝对速度并将其与我的渐近分析进行比较会很酷.

c c++ sorting algorithm benchmarking

18
推荐指数
3
解决办法
7856
查看次数

为什么冒泡排序O(n ^ 2)?

int currentMinIndex = 0;

for (int front = 0; front < intArray.length; front++)
{
    currentMinIndex = front;

    for (int i = front; i < intArray.length; i++)
    {
        if (intArray[i] < intArray[currentMinIndex])
        {
            currentMinIndex = i;
        }
    }

    int tmp = intArray[front];
    intArray[front] = intArray[currentMinIndex];
    intArray[currentMinIndex] = tmp;
}
Run Code Online (Sandbox Code Playgroud)

内循环迭代:n +(n-1)+(n-2)+(n-3)+ ... + 1次.

外循环迭代:n次.

所以你得到n*(数字1到n的总和)

不是n*(n*(n + 1)/ 2)= n*((n ^ 2)+ n/2)

哪个是(n ^ 3)+(n ^ 2)/ 2 = O(n ^ 3)?

我很肯定我做错了.为什么不是O(n ^ 3)?

sorting algorithm complexity-theory big-o bubble-sort

16
推荐指数
2
解决办法
4万
查看次数

如何使用Ruby中的RegEx更改字符串中的字母大小写

说我有一个字符串:"hEY"

我想将它转换为"嘿"

string.gsub!(/([a-z])([A-Z]+ )/, '\1'.upcase)
Run Code Online (Sandbox Code Playgroud)

这就是我的想法,但是当我在gsub方法中使用它时,似乎upcase方法什么都不做.这是为什么?

编辑:我想出了这个方法:

string.gsub!(/([a-z])([A-Z]+ )/) { |str| str.downcase!.capitalize! }
Run Code Online (Sandbox Code Playgroud)

有没有办法在正则表达式中执行此操作?我真的不明白'\ 1''\ 2'的事情.这是反向引用吗?这是如何运作的

ruby regex

14
推荐指数
3
解决办法
5325
查看次数

编辑距离递归算法 - Skiena

我正在阅读Steven Skiena撰写的算法设计手册,我正处于动态编程章节.他有一些编辑距离的示例代码,并使用了一些既不在书中也不在互联网上解释的功能.所以我很想知道

a)该算法如何工作?

b)indel和match函数有什么作用?

#define MATCH     0       /* enumerated type symbol for match */
#define INSERT    1       /* enumerated type symbol for insert */
#define DELETE    2       /* enumerated type symbol for delete */

int string_compare(char *s, char *t, int i, int j)
{
        int k;                  /* counter */
        int opt[3];             /* cost of the three options */
        int lowest_cost;        /* lowest cost */

        if (i == 0) return(j * indel(' '));
        if (j == 0) return(i * indel(' ')); …
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm dynamic-programming

13
推荐指数
3
解决办法
7958
查看次数

为什么初始化这样的二维数组会更糟​​?

for(int i = 0; i<100; i++)

    for(int j = 0; j<100; j++)

         array[j][i] = 0;
         // array[i][j] = 0;
Run Code Online (Sandbox Code Playgroud)

我的教授说,第一种方式初始化二维数组要比第二种方式要昂贵得多.有人可以解释引擎盖下面发生了什么事情吗?或者,这两种初始化方法是否具有相同的性能?

c arrays assembly multidimensional-array localityofreference

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

在具有两个缺失值的整数数组中找到2个缺失的数字

你怎么做到这一点?值未排序但属于[1..n] Example数组[3,1,2,5,7,8].回答:4, 6

我在另一篇类似的帖子中看到了这个解决方案,但我不明白最后一步:

  • 找到数字的总和S = a1 + ... + an.
  • 还可以找到平方和T =a1²+ ... +an².
  • 你知道总和应该是S'= 1 + ... + n = n(n + 1)/ 2
  • 你知道平方和应该是T'=1²+ ... +n²= n(n + 1)(2n + 1)/ 6.
  • 现在建立以下方程组x + y = S'-S,x²+ y2 = T'-T.
  • 通过写x²+ y2 =(x + y)²-2xy => xy =((S'-S)²-(T'-T))/ 2来求解.
  • 现在这些数字仅仅是z中的二次曲线的根:z 2 - (S'-S)z +((S'-S)²-(T'-T))/ 2 = 0.

在z为未知的最后一步中设置二次方程的解释是什么?解决这个问题背后的直觉是什么?

c++ java arrays algorithm math

11
推荐指数
4
解决办法
2万
查看次数

"容器"和"数据结构"之间有什么区别?

什么是容器?据我了解:

  • 抽象数据类型仅仅是数据存储方式的逻辑描述以及该数据允许的操作.例如,堆栈被定义为具有操作push,pop等和LIFO访问的数据类型.

  • 数据结构是此抽象定义的实际实现,在某些计算机编程语言中,例如,C++中的堆栈在标准库中实现,如std :: stack.

首先,请纠正/加强我目前对上述区别的理解.

其次,究竟什么是容器?我经常听到这个词被抛出来.它和我对数据结构的定义是一样的吗?

此外,维基百科对这些术语有三个单独的条目.

c++ algorithm data-structures

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