蓝桥杯冲刺:简单排序算法

简单排序算法包括选择排序、冒泡排序、桶排序和插入排序,本节介绍选择排序这种简单排序算法。
选择排序
基本思想
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,按照顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。

排序过程
例如:

初始:[5 4 6 8 7 1 2 3]
第一趟排序后 1 [4 6 8 7 5 2 3]
第二趟排序后 1 2 [6 8 7 5 4 3]
第三趟排序后 1 2 3 [8 7 5 4 6]
第四趟排序后 1 2 3 4 [7 5 8 6]
第五趟排序后 1 2 3 4 5 [7 8 6]
第六趟排序后 1 2 3 4 5 6 [8 7]
第七趟排序后 1 2 3 4 5 6 7 [8]
最后排序结果 1 2 3 4 5 6 7 8

对应代码:

def selection_sort(a):
  n = len(a)#n=8
  for i in range(n - 1):#for循环遍历从0开始的8个位置
      k = i#把每一个位置都赋值给k一遍
      # print(k)
      for j in range(i + 1, n):#从1开始的7个位置
          # print(j)
          if a[j] < a[k]:#如果a[1]<a[0](4<5)
            k = j#把j的值1,赋值给原为0的k(意义:将第一号的数字与后边七个数字中最小的一个拿出来比较)

      if k != i:#如果k被赋予新值,则进行下一步
          temp = a[i]#temp=5
          a[i] = a[k]#a[0]=4(原a[0]=5)
          a[k] = temp#再把temp=4赋值给a[1]=4
          # 这样本来a[0]=5,a[1]=4,现在位置正好相反(意义:将后边数字中最小的一个数字放在最前面的位置)
arr = [5 ,4 ,6 ,8 ,7, 1, 2 ,3]

selection_sort(arr)
print(arr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值