Python 冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
实例
def bubbleSort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i]),
执行以上代码输出结果为:
排序后的数组: 11 12 22 25 34 64 90
Python3 实例
小花花
124***4671@qq.com
参考:
"""冒泡排序 Bubblesort.py""" from random import randrange, shuffle def Bubblesort(): array = [] while len(array) < 12: # 范围内随机取12个数值 array.append(randrange(-99, 101, 3)) shuffle(array) # 打乱数组 print('排序前数组:{}'.format(array)) for i in range(12): for j in range(11 - i): if array[j] > array[j + 1]: # 遇到较小值前后交换 array[j], array[j + 1] = array[j + 1], array[j] print('排序后数组:{}'.format(array)) Bubblesort()小花花
124***4671@qq.com
JonnyHuang
joo***nny@i163.com
可选择升序和降序。
#可选升降序的冒泡排序, order>0升序,order<0降序 def bubbleSort(arr,order): max = len(arr) for i in range(0, max): j = 1 while(j<max-i): if((arr[j-1]>arr[j]) and (int(order)>0)) or ((arr[j-1]<arr[j]) and (int(order)<0)): arr[j-1], arr[j] = arr[j], arr[j - 1] j += 1 i += 1 return arr A = [64, 25, 12, 22, 11] print(bubbleSort(A, -1)) print(bubbleSort(A, 1))JonnyHuang
joo***nny@i163.com
BetyOne
131***3935@qq.com
实现冒泡法排序时要考虑时间复杂度和空间复杂度是靠近O(1) ,还是接近O(n),甚至是O(n²),时间复杂度大的算法会增加计算机运行负荷,效率低下。尽量写出时间复杂度小的算法。
实例一:
# 冒泡法 排序 nums = random.sample(range(1000),9) length = len(nums) for i in range(length): # 控制循环多少次 flag = True #假设无需交换 for j in range(length-1-i): if nums[j] > nums[j+1]: nums[j],nums[j+1] = nums[j+1],nums[j] # 大数与小数互换 flag = False # 如果交换了 就推翻假设 if flag: # 如果假设成立,则结束交换 break print(nums)实例二(最基础的if循环语句实现排序法)
nums = random.sample(range(1,1000),3) order = None if nums[0] > nums[1]: if nums[1] > nums[2]: order = [2,1,0] else: if nums[0] > nums[2]: order = [1,2,0] else: order = [1,0,2] else: if nums[0] > nums[2]: order = [2,0,1] else: if nums[1] > nums[2]: order = [0,2,1] else: order = [0,1,2] for i in order: print(nums[i])实例三 (sort排序法)
多多练习各种排序法,不仅限于冒泡排序,分析计算他们的时间复杂度。
BetyOne
131***3935@qq.com