• 算法学习:简单选择排序


    题目:给定一个数组 [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)

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

  • 相关阅读:
    linux基础命令之一
    Chrome 控制台使用大全
    移动端效果 — 页面引入在线视频
    移动端——简单计分表单
    JS操作cookie
    移动端页面字体——rem的使用
    Highcharts 使用总结
    CSS水平居中
    python学习 day2
    python学习 day1
  • 原文地址:https://www.cnblogs.com/hqq2019-10/p/11681527.html
Copyright © 2020-2023  润新知