如何计算选择排序的时间复杂度
How To calculate time complexity of selection sort
选择排序的时间复杂度(最坏情况)使用伪代码:
'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]
第一步将出现n-1次(n是数组的长度)。所以第二个和第三个。我坚持第 4 步是否会发生 n!时间或其他。
该算法的基本操作是第 5 行的比较,在内循环中。两个循环都执行了≈n次,即基本操作执行了n*n次≈n^2.
选择排序的时间复杂度为O(n^2)。对于最坏的最好的和平均的情况是一样的。
您应该看看下面的 link,它很好地概述了选择排序。
https://www.khanacademy.org/computing/computer-science/algorithms/sorting-algorithms/a/analysis-of-selection-sort
希望对您有所帮助。
编辑:
在分析非递归算法的时间复杂度时,
- 确定指示输入大小的参数
- 识别基本操作
- 设置一个表示基本操作执行次数的总和
- 确定其增长顺序
- 给出渐近估计
在这种情况下,输入大小将是数组的大小,基本操作是比较,算术和是,
Σ1≤j≤n-1Σj≤i≤n或Σ0≤j≤n-2Σj+1≤i≤n-1
这将计算为 (n-1)(n/2) 渐近 O(n^2)。
要了解更多信息,我会推荐这两本书,
算法设计与分析导论-Anany Livitin
算法导论 - Coreman
选择排序的时间复杂度(最坏情况)使用伪代码:
'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]
第一步将出现n-1次(n是数组的长度)。所以第二个和第三个。我坚持第 4 步是否会发生 n!时间或其他。
该算法的基本操作是第 5 行的比较,在内循环中。两个循环都执行了≈n次,即基本操作执行了n*n次≈n^2.
选择排序的时间复杂度为O(n^2)。对于最坏的最好的和平均的情况是一样的。
您应该看看下面的 link,它很好地概述了选择排序。 https://www.khanacademy.org/computing/computer-science/algorithms/sorting-algorithms/a/analysis-of-selection-sort
希望对您有所帮助。
编辑:
在分析非递归算法的时间复杂度时,
- 确定指示输入大小的参数
- 识别基本操作
- 设置一个表示基本操作执行次数的总和
- 确定其增长顺序
- 给出渐近估计
在这种情况下,输入大小将是数组的大小,基本操作是比较,算术和是,
Σ1≤j≤n-1Σj≤i≤n或Σ0≤j≤n-2Σj+1≤i≤n-1
这将计算为 (n-1)(n/2) 渐近 O(n^2)。
要了解更多信息,我会推荐这两本书,
算法设计与分析导论-Anany Livitin
算法导论 - Coreman