Python实例之选择排序

函数实现选择排序

  • 选择排序原理:
      首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序的末尾。直到所有元素均排序完毕。
  • 优点:
      选择排序与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,对 n 个元素的表进行排序只需进行至多 n-1 次交换。
      时间复杂度:O(n²)    空间复杂度:O(1)

升序排列:

# 选择排序(升序、降序)
A = [-8, -9, 5, 6, 2, 3, 7]

print('升序:')

def sort1():
    for i in range(len(A)):
        minA = i  # 序号
        for j in range(i + 1, len(A)):
            if A[minA] > A[j]:
                minA = j
        A[i], A[minA] = A[minA], A[i]  # 交换位置
    return A

print(f'排序后:{sort1()}')

升序:
排序后:[-9, -8, 2, 3, 5, 6, 7]

降序排列:

print('降序:')

def sort2(A):
    for i in range(len(A)):
        max_A = i  # 序号
        for j in range(i + 1, len(A)):
            if A[max_A] < A[j]:
                max_A = j
        A[i], A[max_A] = A[max_A], A[i]  # 交换位置
    return A
    
B = [-8, 9, 6, 2, 1, 4, -10]
print(f'排序后:{sort2(B)}')

降序:
排序后:[9, 6, 4, 2, 1, -8, -10]

将升序、降序合并为一个函数程序:

# 将升序和降序合并为一个程序
# order>0为升序  order<0为降序
A = [-8, -9, 5, 6, 2, 3, 7]

def get_sort(arr, order):
    for i in range(len(A)):
        p = i
        for j in range(i + 1, len(A)):
            if (arr[p] > arr[j]) and (int(order) > 0) or (arr[p] < arr[j]) and (int(order) < 0):
            # 条件合并判断
                p = j
        arr[i], arr[p] = arr[p], arr[i]
    return arr


print(get_sort(A, 1))
print(get_sort(A, -1))

结果:
[-9, -8, 2, 3, 5, 6, 7]
[7, 6, 5, 3, 2, -8, -9]

这篇博文比较简明,方面日后查阅,链接:Python 八大算法比较
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值