Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我对n*log(n)Big O的样子很感兴趣_C_Time Complexity_Big O - Fatal编程技术网

C 我对n*log(n)Big O的样子很感兴趣

C 我对n*log(n)Big O的样子很感兴趣,c,time-complexity,big-o,C,Time Complexity,Big O,我知道简单的线性大O看起来像这样(都是C): #包括 int main() { int数组[10]={1,2,3,4,5,6,7,8,9,10};//数组的元素 int a;//创建新变量 对于(a=0;a如果它的对数基数为2,则重复将n除以一半,直到它达到1,这是获取对数(n)复杂性的最典型方法: for (int i = n; i > 0; i /= 2); 所以O(n log(n))看起来像: for (int i = 0; i < n; i++) { for (int

我知道简单的线性大O看起来像这样(都是C):

#包括
int main()
{
int数组[10]={1,2,3,4,5,6,7,8,9,10};//数组的元素
int a;//创建新变量

对于(a=0;a如果它的对数基数为2,则重复将
n
除以一半,直到它达到1,这是获取对数(n)复杂性的最典型方法:

for (int i = n; i > 0; i /= 2);
所以O(n log(n))看起来像:

for (int i = 0; i < n; i++) {
  for (int j = n; j > 0; j /= 2) {
    // O(1) work
  }
}
for(int i=0;i0;j/=2){
//O(1)工作
}
}
从概念上讲,这类似于对数组(O(n))的每个元素运行二进制搜索(O(log(n))


是a——日志(n)部分将数组拆分为块,而O(n)部分将这些块重新合并在一起。对于每个O(日志(n))拆分操作,一个O(n)合并的发生使得复杂度在嵌套循环中相乘。

通过考虑分治来添加“对数n”因子。其中一些算法设计得最好,并且经常使用

  • 合并排序
  • 堆排序
  • 快速排序
  • 基于优化O(n^2)算法的若干分治算法

  • 看一个算法。谢谢你的帮助:)谢谢你的答案:)
    for (int i = n; i > 0; i /= 2);
    
    for (int i = 0; i < n; i++) {
      for (int j = n; j > 0; j /= 2) {
        // O(1) work
      }
    }