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循环的内部移动到插入
函数中不会改变复杂性。如果您将插入
函数的内容复制并粘贴到调用它的循环中,代码的运行时间将不会有任何差异(事实上,编译器可能在编译时为您执行此操作,作为优化的一部分)
如果以这种方式查看代码,您会注意到它在功能上与您提供的参考代码基本相同
在启用优化的情况下编译(默认情况下)应该使两段代码几乎相同。也许我不明白您的问题是什么,但您可以简单地测量增加输入大小所需的时间,以了解复杂性。@Kikit。考虑在代码审查堆栈交换上发布这一点。该网站更适合让人们查看您现有的工作代码,并提供您需要的反馈。@matrixuly。有没有办法将此问题转移到代码复查堆栈交换,或者我必须在那里重新发布?@tobi303。我只想知道我的代码的时间和空间复杂度,我只想测量一下,我说过,参考代码要短得多,而且它的功能更清晰。拥有相当长的代码,以更混乱的方式完成完全相同的事情,很少是一件好事。