算法学习:简单选择排序

题目:给定一个数组 [3,2,11,-9,0,12],如何将这个数组进行排序,得到一个有序序列

排序过程

  1.选择数组中最小元素的索引(从0到length-1),和第一个元素(索引为0) 的两个值交换位置:[-9,2,11,3,0,12]

  2.选择数组中最小元素的索引(从1到length-1),和第一个元素(索引为0) 的两个值交换位置:[-9,0,11,3,2,12]

  3.选择数组中最小元素的索引(从2到length-1),和第一个元素(索引为0) 的两个值交换位置:[-9,0,2,3,11,12]

排序思路总结

  1.选择的次数为len(arr) :arr 为需要排序的数组

  2.选择的序列逐渐缩短

  3.找到最小元素的索引

Python代码

def selectSort(arr):
    length = len(arr)
    for i in range(length):
        min_value_index = i
        for j in range(i+1,length):
            if arr[j] < arr[min_value_index]:
                min_value_index = j
        arr[i],arr[min_value_index] = arr[min_value_index],arr[i]
    return arr

arr = [3,2,11,-9,0,12]
print(selectSort(arr)) #[-9, 0, 2, 3, 11, 12]

时间复杂度:O(n^2)

补充:每次排序,元素相对位置都改变了,所以选择排序是不稳定的。

posted @ 2020-11-05 18:32  hqq的进阶日记  阅读(99)  评论(0)    收藏  举报