简单选择排序过程及比较次数
对序列(49, 38, 65, 97, 76, 13, 27, 49)进行非降序排序,使用简单选择排序算法:
比较次数计算
• 序列长度 n = 8。
•*** 简单选择排序的比较次数固定为n(n−1)/2***
• 代入公式:
比较次数=8×7/2=28
结论:共需 28 次比较,与序列初始状态无关。
每趟排序结果(共 7 趟)
-
第 1 趟:
• 选最小元素13(索引 5),与首位49交换。
• 结果:[13, 38, 65, 97, 76, 49, 27, 49]。
-
第 2 趟:
• 在剩余序列中选最小元素27(索引 6),与38交换。
• 结果:[13, 27, 65, 97, 76, 49, 38, 49]。
-
第 3 趟:
• 在剩余序列中选最小元素38(索引 6),与65交换。
• 结果:[13, 27, 38, 97, 76, 49, 65, 49]。
-
第 4 趟:
• 在剩余序列中选最小元素49(索引 5),与97交换。
• 结果:[13, 27, 38, 49, 76, 97, 65, 49]。
-
第 5 趟:
• 在剩余序列中选最小元素49(索引 7),与76交换。
• 结果:[13, 27, 38, 49, 49, 97, 65, 76]。
-
第 6 趟:
• 在剩余序列中选最小元素65(索引 6),与97交换。
• 结果:[13, 27, 38, 49, 49, 65, 97, 76]。
-
第 7 趟:
• 在剩余序列中选最小元素76(索引 7),与97交换。
• 最终结果:[13, 27, 38, 49, 49, 65, 76, 97]。
完整流程总结
【表格】
趟数 操作(选择最小元素交换) 当前序列
初始 - 49, 38, 65, 97, 76, 13, 27, 49
1 交换 49(位置0)和 13(位置5) 13, 38, 65, 97, 76, 49, 27, 49
2 交换 38(位置1)和 27(位置6) 13, 27, 65, 97, 76, 49, 38, 49
3 交换 65(位置2)和 38(位置6) 13, 27, 38, 97, 76, 49, 65, 49
4 交换 97(位置3)和 49(位置5) 13, 27, 38, 49, 76, 97, 65, 49
5 交换 76(位置4)和 49(位置7) 13, 27, 38, 49, 49, 97, 65, 76
6 交换 97(位置5)和 65(位置6) 13, 27, 38, 49, 49, 65, 97, 76
7 交换 97(位置6)和 76(位置7) 13, 27, 38, 49, 49, 65, 76, 97
算法特性说明
• 稳定性:不稳定(两个49的相对顺序改变)。
• 时间复杂度:
• 比较次数:恒为O(n2)O(n^2)O(n2)(本例 28 次)。
• 移动次数:与序列相关,最坏为3(n−1)3(n-1)3(n−1)。
• 适用场景:适用于数据量较小且对稳定性无要求的场景。