冒泡排序算法思路如下:
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))