【问题标题】:Runtime of bubble/simple sort冒泡/简单排序的运行时间
【发布时间】:2011-10-31 13:06:08
【问题描述】:

在课堂上,简单排序被用作我们最初定义的 O(N) 运行时之一......

但是由于它每次运行时都会对数组进行一次较少的迭代,所以它不会更像...

运行时气泡= sum(i = 0, n, (n-i)) ?

在渐近分析中不仅是最大的进程一个接一个地运行,这将是 N 次迭代,为什么根据定义这种排序不是 O(N)?

【问题讨论】:

    标签: sorting data-structures runtime theory


    【解决方案1】:

    1 + 2 + ... + N 的总和是N*(N+1)/2 ...(高中数学)...随着N 趋于无穷大,它接近(N^2)/2。经典O(N^2)

    【讨论】:

      【解决方案2】:

      我不确定您(或您的教授)从哪里得到冒泡排序是 O(n) 的概念。如果您的教授有保证的 O(n) 排序算法,他们会明智地尝试申请专利 :-)

      就其本质而言,冒泡排序是 O(n2)。

      那是因为它必须对整个数据集进行完整的传递,才能正确放置第一个元素。

      然后第二遍N - 1 元素以正确放置第二个。第三遍N - 2 元素以正确放置第三个。

      以此类推,实际上以接近 N * N / 2 的操作结束,去除多余的 0.5 常量,是 O(n2)。

      【讨论】:

        【解决方案3】:

        冒泡排序的时间复杂度是O(n^2)。 考虑复杂度时,只考虑最大的表达式(但不考虑因子)

        【讨论】:

          猜你喜欢
          • 2015-06-22
          • 2013-01-23
          • 1970-01-01
          • 2016-09-06
          • 2012-08-26
          • 1970-01-01
          • 2018-01-29
          • 2022-10-21
          • 1970-01-01
          相关资源
          最近更新 更多