排序算法(2):选择排序
问题
排序 [30, 24, 5, 58, 18, 36, 12, 42, 39]
选择排序
选择排序每次从待排序序列中选出最小(或最大)的元素,将其放到序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
图解
- 第一轮循环,遍历数组,从中选出最小的元素,和起始位置元素进行交换
- 第二轮循环,遍历剩余未排序元素,从中继续寻找最小的元素,将其放到已排序的序列末尾
- 继续循环遍历,直到排序完成
代码
def selection_sort(nums):
n = len(nums)
for i in range(n):
min_index = i
for j in range(i+1, n):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
时间复杂度
选择排序的时间复杂度为 O(n2)
原文地址:https://blog.csdn.net/m0_45284589/article/details/144366134
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!