冒泡排序

冒泡排序原址排序输入的数,算法在数组A中重排这些数,

在任何时候,最多只有常数个数字存储在数组外部。

冒泡排序是原地排序,基本无需外部空间。

冒泡排序依次循环数组,每轮循环从前向后依次比较两个元素,排列使得后一个元素总是大于前一个元素。

因此,每轮循环可以保证当前未排序的列表中最大的元素放置在列表末尾。

即每轮循环后,可以使得未排序的列表长度减1。

重复直到列表仅剩唯一一个元素。

冒泡排序是稳定排序。

Python实现代码如下:

# -*- coding: utf-8 -*-
def bubbleSort(bubbleList):
    listLength = len(bubbleList)   #计算排序列表的长度
    while listLength > 0:
        for i in range(listLength - 1):
            if bubbleList[i] > bubbleList[i+1]:
                temp = bubbleList[i+1]
                bubbleList[i+1] = bubbleList[i]
                bubbleList[i] = temp   #交换bubbleList[i]与bubbleList[i+1]的值
        listLength -= 1   #每轮排序结束后,最后一个元素已经是最大的。因此只需要排前N-1个元素即可。
    return bubbleList

if __name__ == '__main__':
    list1 = [3,2,4,6,7,5]
    list2 = ["wang", "zhe", "tian", "jin", "da", "xue"]
    ordered_list1 = bubbleSort(list1)
    ordered_list2 = bubbleSort(list2)
    print ordered_list1 #[2, 3, 4, 5, 6, 7]
    print ordered_list2 #['da', 'jin', 'tian', 'wang', 'xue', 'zhe']


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WangZhe0912

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值