自学内容网 自学内容网

排序算法(2):选择排序

问题

排序 [30, 24, 5, 58, 18, 36, 12, 42, 39]

选择排序

选择排序每次从待排序序列中选出最小(或最大)的元素,将其放到序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

图解

  1. 第一轮循环,遍历数组,从中选出最小的元素,和起始位置元素进行交换
    在这里插入图片描述
  2. 第二轮循环,遍历剩余未排序元素,从中继续寻找最小的元素,将其放到已排序的序列末尾
    在这里插入图片描述
  3. 继续循环遍历,直到排序完成

代码

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)!