Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 下面插入排序代码的复杂性是什么?_Sorting_Time Complexity_Insertion Sort_Space Complexity_Code Complexity - Fatal编程技术网

Sorting 下面插入排序代码的复杂性是什么?

Sorting 下面插入排序代码的复杂性是什么?,sorting,time-complexity,insertion-sort,space-complexity,code-complexity,Sorting,Time Complexity,Insertion Sort,Space Complexity,Code Complexity,我已经为插入排序编写了以下代码。我决定通过函数调用来编写代码,而不是传统的方法。但我无法找到代码的复杂性。请帮助我找出时间和空间的复杂性,以及与传统方法的差异有多大 #包括 void printary(int ar_size,int*ar){ int j; 对于(j=0;j=0;i--){ if(ar[i-1]>v){ ar[i]=ar[i-1]; } 否则{ ar[i]=v; 打破 } } 打印阵列(ar_大小,ar); } void insertionSort(int-ar_-si

我已经为插入排序编写了以下代码。我决定通过函数调用来编写代码,而不是传统的方法。但我无法找到代码的复杂性。请帮助我找出时间和空间的复杂性,以及与传统方法的差异有多大

#包括
void printary(int ar_size,int*ar){
int j;
对于(j=0;j=0;i--){
if(ar[i-1]>v){
ar[i]=ar[i-1];
}
否则{
ar[i]=v;
打破
}     
}
打印阵列(ar_大小,ar);
}
void insertionSort(int-ar_-size,int*ar){
int i;
对于(i=1;i=1)
{
a[j]=a[j-1];
j--;
}
a[j]=温度;
}   
}

您的代码的时间复杂度仍然是O(n²)。将for循环的内部移动到
插入
函数中不会改变复杂性。如果您将
插入
函数的内容复制并粘贴到调用它的循环中,代码的运行时间将不会有任何差异(事实上,编译器可能在编译时为您执行此操作,作为优化的一部分)

如果以这种方式查看代码,您会注意到它在功能上与您提供的参考代码基本相同

  • 参考代码有一个从0到数组大小的外部循环,就像您的一样
  • 参考代码的内部循环从数组中的当前位置循环到开始位置,或者直到找到较小的元素为止。您的代码调用一个函数,该函数将继续执行此操作,只需更多的代码行即可
  • 在功能上,您的代码基本上与引用插入排序实现相同;两者都具有相同的时间复杂度,并且将以完全相同的一系列步骤对数组进行排序。然而,引用实现可能会稍微快一点,因为它不进行太多的变量赋值,并且避免使用函数调用


    在启用优化的情况下编译(默认情况下)应该使两段代码几乎相同。

    也许我不明白您的问题是什么,但您可以简单地测量增加输入大小所需的时间,以了解复杂性。@Kikit。考虑在代码审查堆栈交换上发布这一点。该网站更适合让人们查看您现有的工作代码,并提供您需要的反馈。@matrixuly。有没有办法将此问题转移到代码复查堆栈交换,或者我必须在那里重新发布?@tobi303。我只想知道我的代码的时间和空间复杂度,我只想测量一下,我说过,参考代码要短得多,而且它的功能更清晰。拥有相当长的代码,以更混乱的方式完成完全相同的事情,很少是一件好事。