def bubbleSort(nums):
for i in range(1,length): # 让i表示轮数,length个数,排length-1轮即可
for j in range(0, length-1): # j表示索引,并且不断移动,[0, length-2]
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
def main():
nums = [2, 5, 4, 7, 5, 0, 9, 1] # 可变数据类型
bubbleSort(nums)
print(nums)
if __name__ == '__main__':
main()
将该代码背下来
def bubbleSort(nums):
length = len(nums)
for i in range(1, length): # 让i表示轮数,length个数,排length-1轮即可[1, length-1]
flag = False # 默认当前轮没有换位
for j in range(0, length-i): # j表示索引,后面已经排好的就不用再排了[0, length-i-1]
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
flag = True # 当前轮发生了换位
if flag == False: # 没有发生换位,说明整体的顺序已经拍好
break
def main():
nums = [2, 5, 4, 7, 5, 0, 9, 1] # 可变数据类型
bubbleSort(nums)
print(nums)
if __name__ == '__main__':
main()
时间复杂度: O ( n 2 ) O(n^2) O(n2)
稳定性:稳定
def bubbleSort(nums):
length = len(nums)
for i in range(1, length): # 让i表示轮数,length个数,排length-1轮即可[1, length-1]
flag = False # 默认当前轮没有换位
for j in range(0, length-i): # 从左到右排序
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
for j in range(length-1, i-1, -1): # 从右到左排序
if nums[j] < nums[j-1]:
nums[j], nums[j-1] = nums[j-1], nums[j]
flag = True # 当前轮发生了换位
if flag == False: # 没有发生换位,说明整体的顺序已经拍好
break
def main():
nums = [2, 5, 4,9, 0, 9, 1] # 可变数据类型
bubbleSort(nums)
print(nums)
if __name__ == '__main__':
main()