冒泡排序的思想:
将元素两两之间进行比较, 谁大就往后移动, 直到将最大的元素排到最后面, 一直循环, 就形成了有序的序列
- # 冒泡排序
- def bubble(arr):
- length = len(arr)
- for i in range(length-1):
- for j in range(length-1-i):
- if arr[j]> arr[j+1]:
- arr[j], arr[j+1] = arr[j+1], arr[j]
- return arr
- arr = [2, 1, 3, 56, 32, -9, 3, 0, 34, 334, 5]
- print('冒泡排序结果:', bubble(arr))
结果:
冒泡排序结果: [-9, 0, 1, 2, 3, 3, 5, 32, 34, 56, 334]
- # 找出队列第 2 个最大的数 (根据冒泡排序实现的)
- def bubble_k(arr, k):
- length = len(arr)
- for i in range(k):
- for j in range(length-1-i):
- if arr[j]> arr[j+1]:
- arr[j], arr[j+1] = arr[j+1], arr[j]
- return arr[-k]
- arr = [2, 1, 3, 56, 32, -9, 3, 0, 34, 334, 5]
- print('冒泡结果:', bubble_k(arr, 2))
结果:
冒泡结果: 56
- (因为当一次都没有交换位置的话就代表这是一个有序的序列, 就不用再去执行后面的循环了)
- def bubble_sort(arr):
- for i in range(len(arr) - 1):
- flag = False
- for j in range(len(arr) - 1 - i):
- if arr[j]> arr[j + 1]:
- arr[j], arr[j + 1] = arr[j + 1], arr[j]
- flag = True
- if not flag:
- break
- return arr
- arr = [2, 1, 3, 56, 32, -9, 3, 0, 34, 334, 5]
- print('冒泡排序结果:', bubble_sort(arr))
- def bubble_sort(arr):
- for i in range(len(arr) - 1):
- flag = False
- for j in range(len(arr) - 1 - i):
- if arr[j]> arr[j + 1]:
- arr[j], arr[j + 1] = arr[j + 1], arr[j]
- flag = True
- if flag:
- flag = False
- for j in range(len(arr) - 2 - i, 0, -1):
- if arr[j - 1]> arr[j]:
- arr[j], arr[j - 1] = arr[j - 1], arr[j]
- flag = True
- if not flag:
- break
- return arr
- arr = [2, 1, 3, 56, 32, -9, 3, 0, 34, 334, 5]
- print('冒泡排序结果:', bubble_sort(arr))
来源: http://www.bubuko.com/infodetail-3491373.html