python排序--冒泡排序

版权声明:本文为博主原创文章,未经允许,不得转载,如需转载请注明出处 https://blog.csdn.net/ssjdoudou/article/details/83719691

写在最前面:

python本身内置了sort,sorted函数用于排序,那么这两者有什么区别呢?

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

而我打算把所有的排序做个整理,今天从冒泡排序开始

冒泡排序的思路是两层循环,第一层循环使用变量i遍历所有元素,第二层循环使用变量j遍历len(list)-i次,使用当前第i个元素比较它之后的所有元素,将比它小的放在最前面。

从小到大:

(从大到小只要改成nums[i] < nums[j]即可)

def bubble_sort(nums):
    # 冒泡排序
    count = len(nums)
    for i in range(0, count):
        for j in range(i + 1, count):
            if nums[i] > nums[j]:
                nums[i], nums[j] = nums[j], nums[i]
    return nums

下面看一个完整的例子:

class mysort():
    def bubble_sort(self,nums):
        # 冒泡排序
        count = len(nums)
        for i in range(0, count):
            for j in range(i + 1, count):
                if nums[i] > nums[j]:
                    nums[i], nums[j] = nums[j], nums[i]
        print(nums)
        return nums


if __name__ == '__main__':
    new  = mysort()
    new.bubble_sort([4,2,5,4,5,12,0,2,3,1,1,7,4])
[0, 1, 1, 2, 2, 3, 4, 4, 4, 5, 5, 7, 12]

Process finished with exit code 0

事实上,这种排序是很慢的,时间复杂度为O(n),一次需要比较两个元素。刷leetcode排序不要用这种,一定会超时。

猜你喜欢

转载自blog.csdn.net/ssjdoudou/article/details/83719691
今日推荐