@spiritnotes
2016-02-14T08:00:11.000000Z
字数 659
阅读 1619
算法
冒泡排序的得名来至于其排序方法,将最小的依次向上移动,就像冒泡一样。
import unittest
def swap(array, i, j):
array[i], array[j] = array[j], array[i]
def sort(array):
size = len(array)
for end in range(size-1, 0,-1):
swap_flag = False
for i in range(0, end):
if array[i] > array[i+1]:
swap(array, i, i+1)
swap_flag = True
#当次循环中未执行交换,说明顺序已经排好
if not swap_flag:
break
class TestQuickSort(unittest.TestCase):
def sort(self, array):
sort(array)
return array
def test_sort(self):
self.assertEqual(self.sort([]),[])
self.assertEqual(self.sort([1]),[1])
self.assertEqual(self.sort([2,2]),[2,2])
self.assertEqual(self.sort([3,2,1]),[1,2,3])
self.assertEqual(self.sort([3,2,1,4,3,4,2,2]),[1,2,2,2,3,3,4,4])
由冒泡排序实现中可以看到只有确认左侧数大于右侧数时才会进行交换,因此其是稳定的。