相关疑难解决方法(0)

使用 -O3 进行冒泡排序比使用 GCC 的 -O2 慢

我用 C 语言实现了一个冒泡排序,并在测试其性能时发现该-O3标志使其运行速度甚至比没有标志时还要慢!与此同时-O2,它的运行速度比预期的要快得多。

没有优化:

time ./sort 30000

./sort 30000  1.82s user 0.00s system 99% cpu 1.816 total
Run Code Online (Sandbox Code Playgroud)

-O2

time ./sort 30000

./sort 30000  1.00s user 0.00s system 99% cpu 1.005 total
Run Code Online (Sandbox Code Playgroud)

-O3

time ./sort 30000

./sort 30000  2.01s user 0.00s system 99% cpu 2.007 total
Run Code Online (Sandbox Code Playgroud)

代码:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

int n;

void bubblesort(int *buf)
{
    bool changed = true;
    for (int i = n; changed == true; …
Run Code Online (Sandbox Code Playgroud)

c gcc x86-64 cpu-architecture compiler-optimization

148
推荐指数
1
解决办法
3万
查看次数

现实世界中是否曾经针对小输入使用过具有高时间复杂度的算法?

假设我们有一个问题,某个算法(我们称之为算法_1)的时间复杂度为 ,O(n^2)另一个算法(我们称之为算法_2)的时间复杂度为O(n),但实际上我们看到n < 1000算法_1 更快,否则算法_2 更快是比较快的。

为什么我们不能直接写这样的代码:

if ( n < 1000)
  do algorithm_1
else
  do algorithm_2
Run Code Online (Sandbox Code Playgroud)

这是程序员真正做的事情还是有缺点?

对于较小的程序,这似乎是一个好主意。

algorithm implementation time-complexity

66
推荐指数
7
解决办法
5963
查看次数

Bubblesort超过其他排序算法?

为什么你会选择冒泡排序而不是其他排序算法?

sorting algorithm bubble-sort

11
推荐指数
5
解决办法
2421
查看次数

插入排序比冒泡排序更好?

我正在为考试做修改.

想知道在什么条件下插入排序比O(N ^ 2)的相同平均情况复杂度的冒泡排序更好.

我确实找到了一些相关的文章,但我无法理解它们.

有人会介意以简单的方式解释它吗?

sorting algorithm bubble-sort insertion-sort

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

如何计算冒泡排序时间复杂度

我试图理解数据结构和不同的算法,然后我很困惑地测量冒泡排序时间的复杂性.

for (c = 0; c < ( n - 1 ); c++) {
  for (d = 0; d < n - c - 1; d++) {
    if (array[d] > array[d+1]) /* For descending order use < */
    {
      swap       = array[d];
      array[d]   = array[d+1];
      array[d+1] = swap;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在每个Big O都会告诉Best case O(n),Avg case(n2)和Worst Case(n2).但是当我看到代码时,发现第一阶段内部循环运行n次然后是第二阶段n - 1,n - 2等等.这意味着在每次迭代中它的值都会下降.例如,如果我有[] = {4,2,9,5,3,6,11},那么比较的总数将是 -

1st Phase - 7 time
2nd phase - 6 time
3rd Phase - 5 time
4th …
Run Code Online (Sandbox Code Playgroud)

sorting algorithm

10
推荐指数
2
解决办法
7万
查看次数