【算法基础】选择排序与冒泡排序的思想与实现

1. 选择排序

1.1 思想

在这里插入图片描述
选择排序的思想很简单,如上图所示。在每一次遍历子数组的过程中,选择最小的和子数组的第一位交换。子数组的选择从一开始的整个数组,到后面范围逐渐向原数组最后一位缩减。复杂度 O ( n 2 ) O(n^2) O(n2)

1.2 实现

def swap(arr, i, j):
    temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp


if __name__ == '__main__':
    arr = [6, 3, 1, 4, 2, 5]
    print("原数组:" + str(arr))

    for i in range(0, len(arr) - 1):
        min_idx = i
        for j in range(i + 1, len(arr)):
            min_idx = j if arr[j] < arr[min_idx] else min_idx
        swap(arr, i, min_idx)
    print("排序后的数组:" + str(arr))

main方法里是对选择排序的实现。选择排序就是,从剩下的数里面选择最小/最大的数,与当前子数组的第一位数进行交换。

2. 冒泡排序

2.1 思想

在这里插入图片描述
如上图所示,冒泡排序的思想是,在每一轮将最大的数换到子数组的最后一位上去。通过多地置换,最终实现数组的有序。复杂度 O ( n 2 ) O(n^2) O(n2)

2.2 实现

def swap(arr, i, j):
    temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp


if __name__ == '__main__':
    arr = [6, 3, 1, 4, 2, 5]
    print("排序前的数组:" + str(arr))

    for i in range(len(arr) - 1, 0, -1):
        for j in range(0, i):
            if arr[j] > arr[j + 1]:
                swap(arr, j, j + 1)

    print("排序后的数组:" + str(arr))

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 16:48:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 16:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 16:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 16:48:02       18 阅读

热门阅读

  1. GO - 标准库

    2024-04-08 16:48:02       15 阅读
  2. Hamilton-Jacobi-Bellman (HJB) 方程

    2024-04-08 16:48:02       18 阅读
  3. 第十四届蓝桥杯省赛大学B组填空题(c++)

    2024-04-08 16:48:02       13 阅读
  4. Android Apk签名算法使用SHA256

    2024-04-08 16:48:02       17 阅读
  5. C++ 动态字符串String的介绍及经典用法展示

    2024-04-08 16:48:02       15 阅读
  6. linux知识点

    2024-04-08 16:48:02       13 阅读
  7. 个人网站开发记录(五)二系统后端nodejs

    2024-04-08 16:48:02       13 阅读