冒泡排序原址排序输入的数,算法在数组A中重排这些数,
在任何时候,最多只有常数个数字存储在数组外部。
冒泡排序是原地排序,基本无需外部空间。
冒泡排序依次循环数组,每轮循环从前向后依次比较两个元素,排列使得后一个元素总是大于前一个元素。
因此,每轮循环可以保证当前未排序的列表中最大的元素放置在列表末尾。
即每轮循环后,可以使得未排序的列表长度减1。
重复直到列表仅剩唯一一个元素。
冒泡排序是稳定排序。
Python实现代码如下:
# -*- coding: utf-8 -*-
def bubbleSort(bubbleList):
listLength = len(bubbleList) #计算排序列表的长度
while listLength > 0:
for i in range(listLength - 1):
if bubbleList[i] > bubbleList[i+1]:
temp = bubbleList[i+1]
bubbleList[i+1] = bubbleList[i]
bubbleList[i] = temp #交换bubbleList[i]与bubbleList[i+1]的值
listLength -= 1 #每轮排序结束后,最后一个元素已经是最大的。因此只需要排前N-1个元素即可。
return bubbleList
if __name__ == '__main__':
list1 = [3,2,4,6,7,5]
list2 = ["wang", "zhe", "tian", "jin", "da", "xue"]
ordered_list1 = bubbleSort(list1)
ordered_list2 = bubbleSort(list2)
print ordered_list1 #[2, 3, 4, 5, 6, 7]
print ordered_list2 #['da', 'jin', 'tian', 'wang', 'xue', 'zhe']