阅读量:0
冒泡排序代码如下:,,``
python,def bubble_sort(arr):, n = len(arr), for i in range(n):, for j in range(0, ni1):, if arr[j] > arr[j+1]:, arr[j], arr[j+1] = arr[j+1], arr[j], return arr,
`,,对应单元测试:,,
`python,def test_bubble_sort():, assert bubble_sort([64, 34, 25, 12, 22, 11, 90]) == [11, 12, 22, 25, 34, 64, 90], assert bubble_sort([5, 4, 3, 2, 1]) == [1, 2, 3, 4, 5], assert bubble_sort([1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5], assert bubble_sort([]) == [],
``冒泡排序代码及单元测试
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
冒泡排序代码
def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, ni1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr
单元测试
为了确保我们的冒泡排序函数正常工作,我们需要编写一些单元测试来验证其正确性,以下是一些测试用例:
import unittest class TestBubbleSort(unittest.TestCase): def test_empty_list(self): self.assertEqual(bubble_sort([]), []) def test_single_element(self): self.assertEqual(bubble_sort([5]), [5]) def test_sorted_list(self): self.assertEqual(bubble_sort([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]) def test_reversed_list(self): self.assertEqual(bubble_sort([5, 4, 3, 2, 1]), [1, 2, 3, 4, 5]) def test_unsorted_list(self): self.assertEqual(bubble_sort([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]), [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]) if __name__ == '__main__': unittest.main()
运行这些测试用例,我们可以确认冒泡排序函数能够正确地对各种情况的列表进行排序。
FAQs
Q1: 冒泡排序的时间复杂度是多少?
A1: 冒泡排序的平均和最坏时间复杂度都是O(n^2),其中n是列表的长度,这是因为冒泡排序需要进行n次迭代,每次迭代都需要比较相邻的元素并可能进行交换,尽管在最好的情况下(即列表已经排序),时间复杂度可以降低到O(n),但这通常很少发生。
Q2: 冒泡排序是否适用于大型数据集?
A2: 冒泡排序不适合大型数据集,因为它的时间复杂度为O(n^2),这意味着随着数据量的增加,所需的计算时间将急剧增加,对于大型数据集,更高效的排序算法如快速排序、归并排序或堆排序更为合适。