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_Selection - Fatal编程技术网

Sorting 如何计算选择排序的时间复杂度

Sorting 如何计算选择排序的时间复杂度,sorting,selection,Sorting,Selection,使用伪代码进行选择排序(最坏情况)的时间复杂度: 'Selection-Sort(A) 1 For j = 1 to (A.length - 1) 2 i = j 3 small = i 4 While i < A.length 5 if A[i] < A[small] 6 small = i 7 i = i + 1 8 swap A[small], A[j] ”选择-排序(A) 1表示j=1至(A.长度-1) 2 i=j

使用伪代码进行选择排序(最坏情况)的时间复杂度:

'Selection-Sort(A)

1 For j = 1 to (A.length - 1)

2   i = j

3   small = i

4   While i < A.length

5     if A[i] < A[small]

6       small = i

7     i = i + 1

8   swap A[small], A[j]
”选择-排序(A)
1表示j=1至(A.长度-1)
2 i=j
3小=i
4而我

第一步将发生n-1次(n是数组的长度)。第二个和第三个。我被困在第四步是否会发生n!该算法的基本操作是在内部循环的第5行进行比较。两个循环都被执行≈ n次,即基本操作执行n*n次≈ n^2

选择排序的时间复杂度为O(n^2)。最坏、最好和一般情况也是如此

你应该看看下面的链接,它提供了一个关于选择排序的详细说明。

希望这有帮助

编辑:

在分析非递归算法的时间复杂度时

  • 决定指示输入大小的参数
  • 确定基本操作
  • 设置一个总和,指示执行基本操作的次数
  • 建立其增长秩序
  • 给出一个渐近估计
在这种情况下,输入大小将是数组的大小,基本操作是比较,算术和将是

∑1≤ J≤n-1∑j≤ 我≤n或∑0≤ J≤n-2∑j+1≤ 我≤n-1

这将计算为(n-1)(n/2),它是渐近O(n^2)

关于更多信息,我推荐这两本书

  • 算法设计与分析简介-Anany Livitin

  • 算法简介-Coreman


  • 在您附加的链接中,案例被添加而不是相乘(而循环(n+1)(n/2))。你能解释一下原因吗?