1.使用python对list中的元素进行排序,通过unnitest来进行测试
分析
- arr=[6,5,3,1,8] 总共n=5,j代表元素角标
- arr[0]=6,arr[1]=5,arr[2]=3,arr[3]=1,arr[4]=8 arr[j]
- 冒泡的核心思想是比较两个相邻元素,不满足条件则交换位置
- 冒泡的核心原理是每次只能将一个数归位,如果有n个数排序,只需要将n-1个数归位,即进行n-1趟递归操作。
- 每趟比较的次数为剩余未排序个数-1,注意如果是脚本从0开始计数
代码如下:
import unittest
def bubble_sort(arr):
for i in range(1,len(arr)-1):#循环n-1趟
for j in range(0,len(arr)-i):#每趟比较次数为未比较个数-1
if arr[j]>arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
class SortTestCase(unittest.TestCase):
def test_bubble_sort(self):
test_data_1 = [8, 7, 6, 5, 4, 0, 1]
test_data_2 = [9, 5, 2, 7]
print("输入的数据")
print(test_data_1)
print(test_data_2)
copy_of_data_1 = test_data_1[:] # 拷贝test_data_1
copy_of_data_2 = test_data_2[:] # 拷贝test_data_2
print("拷贝输入的数据")
print(copy_of_data_1)
print(copy_of_data_2)
bubble_sort(test_data_1)
bubble_sort(test_data_2)
print("执行程序后的结果")
print(test_data_1)
print(test_data_2)
copy_of_data_1.sort() # 把copy_of_data_1进行排序
copy_of_data_2.sort() # 把copy_of_data_2进行排序
print("拷贝后的结果进行排序")
print(copy_of_data_1)
print(copy_of_data_2)
self.assertEqual(test_data_1, copy_of_data_1)
self.assertEqual(test_data_2, copy_of_data_2)
if __name__ == '__main__':
unittest.main()