python中四种简单排序算法原理及时间复杂度

冒泡排序

“”"
基本原理:
1, 相邻的元素比较,如果前一个元素大于后一个元素,则交换位置.
2, 一次遍历后,最大的元素会跑到最后.
3, 第二次遍历就只需要比较前len(arr) - i - 1个元素了,因为后面的元素肯定都比前面的元素要大了.
时间复杂度为O(n^2), 空间复杂度为O(1)因为并没有创建新的数组. 是个稳定的算法.
“”"

# 方法一:
def bubble_sort(arr):
    length = len(arr)
    for i in range(length - 1):
        # 改进措施. 如果一次循环完了之后没有进行交换,说明arr本身就有序.后续循环无需再做.
        swapped = False
        for j in range(length - i - 1):
            # 比较相邻的两个元素
            if arr[j] > arr[j + 1]:
                # 交换位置
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swapped = True
        if not swapped:
            break
    return arr


if __name__ == '__main__':
    arr = input('请输入要排序的数字,以逗号分割').strip()
    arr = [int(item) for item in arr.split(',')]
    print(*bubble_sort(arr), sep=',')


# 方法二:
l=[1,3,5,7,9,2,4,6,8]
for i in range(0 , len(l)-1):
	for j in 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值