编程,面试题

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值