Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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

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
Algorithm 计算此选择排序实现的big-O复杂性?_Algorithm_Sorting_Big O_Time Complexity_Selection Sort - Fatal编程技术网

Algorithm 计算此选择排序实现的big-O复杂性?

Algorithm 计算此选择排序实现的big-O复杂性?,algorithm,sorting,big-o,time-complexity,selection-sort,Algorithm,Sorting,Big O,Time Complexity,Selection Sort,我试图计算这个选择排序实现的大O时间复杂性: void selectionsort(int a[], int n) { int i, j, minimum, index; for(i=0; i<(n-1); i++) { minimum=a[n-1]; inde

我试图计算这个选择排序实现的大O时间复杂性:

void selectionsort(int a[], int n)                    
{
    int i, j, minimum, index;                       
    for(i=0; i<(n-1); i++)                       
    {
        minimum=a[n-1];                      
        index=(n-1);                             
        for(j=i; j<(n-1); j++)                   
        {
            if(a[j]<minimum)                     
            {
                minimum=a[j];                               
                index=j;
            }
        }
        if (i != index)
        {
            a[index]=a[i];
            a[i]=minimum;
        }
    }
}    
void selectionsort(int a[],int n)
{
int i,j,最小值,索引;

对于(i=0;i让我们从外部循环的内部开始。它对初始分配执行O(1)工作,然后有一个循环运行n-i次,最后执行O(1)更多工作以执行交换。因此,运行时为Θ(n-i)

如果我们将i从0到n-1相加,我们得到以下结果:

n+(n-1)+(n-2)+…+1

这个著名的总和等于Θ(n2),所以运行时是Θ(n2),匹配


希望这会有所帮助!

正式地说,您可以使用以下方法获得具有增长顺序的确切迭代次数:

执行以下片段代码(原始代码的合成版本),
sum
将等于T(n)的闭合形式

sum=0;
对于(i=0;i<(n-1);i++){
对于(j=i;j<(n-1);j++){
sum++;
}
}

到目前为止您尝试了什么?
sum = 0;
for( i = 0 ;  i < ( n - 1 ) ; i ++ ) {    
    for( j = i ; j < ( n - 1 ) ; j ++ ) {
        sum ++;
    }
}