用Python实现排序(1)冒泡排序

冒泡排序算法思路如下:

1.比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个

2.对每一对相邻元素作同样的工作,从开始第一对到结尾最后一对.这步做完后,最后的元素会是最大的数

3.针对所有的元素重复以上的步骤,除了最后一个.

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一堆数字需要比较.

 

冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名.

 

冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右端冒出.

 

时间复杂度:

当队列已经从小到大排好序或者从大到小排好序,从小到大排好序时可以只扫描一遍就结束排序,此时时间复杂度为O(n)

如果是从大到小,那么就需要扫描n-1次,同时需要比较交换n-1次,时间复杂度为O(n^2)

 

实现代码:

 

def bubbleSort(nums):
    for i in range(len(nums)-1):      #i控制长度 除最后一个
        for j in range(len(nums)-i-1):
            #j代表下标 共比较n-i-1次
            #冒泡排序就是把最大(最小)的放在后(前)面,那么后面的数据肯定已经排好了,不用再比较
            # 循环一次,排好一个数,那么再次循环的时候就把需要比较的长度-1,也就是-i。
            if nums[j]>nums[j+1]:
               nums[j],nums[j+1]=nums[j+1],nums[j]
    return nums
nums=[3,6,13,10,66,22]
print(bubbleSort(nums))

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值