码迷,mamicode.com
首页 > 编程语言 > 详细

20191209-八大排序之选择排序

时间:2019-12-09 21:20:31      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:复杂度   代码实现   sel   highlight   时间   pre   index   控制   div   

1. 选择排序

算法核心思想

选择排序的算法核心思想是从数组中选择最小的元素,放到第一个位置,再从数组中选择第二小的元素放到第二个位置,一直到数组的最后一个元素为止。具体逻辑如下:

  1. 选择数组的第一小的元素,将其放在第一个位置
  2. 选择数组的第二小的元素,将其放在第二个位置
  3. 。。。
  4. 选择数组的第三小的元素,将其放在第n个位置

代码实现

def SelectSort(arr):
    result = []
    roundCount =  len(arr)
    for i in range(roundCount):
        min_val_index = i#每一次都查找数组的最小值的索引
        for j in range(i+1,len(arr)):
            if arr[j]<arr[min_val_index]:
                min_val_index=j
        arr[i],arr[min_val_index] = arr[min_val_index],arr[i]
    return arr

执行解析

使用2层for循环,外层循环控制查找第几小的元素,用于真正的查找,当内层循环找到第n小的元素的时候,将其放置在第n个位置。当所有的元素都放置结束后,排序结束。

总结

选择排序时间复杂度是0( n2),选择排序是一种不稳定排序,举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。

20191209-八大排序之选择排序

标签:复杂度   代码实现   sel   highlight   时间   pre   index   控制   div   

原文地址:https://www.cnblogs.com/hyj691001/p/12013382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!