测试面试时都会遇到编程题,主要还是以简单的算法为主。
基础算法里总是离不开排序,所谓排序就是把一组乱序的数据从大到小或者从小到大排列出来。排序算法中最简单的就是冒泡排序了。
下面通过python对list中的元素进行冒泡排序,并编写unittest单元测试用例来验证。
思路:
1)首先比较每个相邻的元素,把大的元素换到右边,这样每次比较完一行就可以把最大的数字移动到最右边,也就是冒泡;
2)重复上述操作,把每次找到的最大的元素换到当前比较队列的最右。
import unittest #导包
def bubble_sort(arr):
length = len(arr)
for i in range(length-1): # i表示已经找到的最大元素的个数(从0到length-1,最后一个就无需比较)
for j in range(length-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j] #python中交换变量值
class SortTestCase(unittest.TestCase): #定义测试类
def test_bubble_sort(self):
test_data = [8, 3, 5, 6]
copy_of_data = test_data[:] #拷贝
bubble_sort(test_data)
copy_of_data.sort()
self.assertEqual(test_data, copy_of_data) #断言
if __name__ == '__main__':
unittest.main()
测试的面试编程题,主要还是考察基本算法。加油!!!