排序方法有很多,实际和面试中我们面对最多可能就是冒泡排序和选择排序
冒泡排序:在给定数据列表中从第一个开始逐一和下一个值进行比较,如果发现下一个值大于自己就调换下位置,以此类推,到最后便可以实现从小到大的排序
选择排序:在给定数据列表中找到最小的一个数值,然后依次和后面的进行对比,比如我们认为最左侧的值最小,并将它与后面的值依次进行对比,一旦确定哪个数据是最小的就把那个数值放在最前面,然后开始对比第二小的值,以此类推
上代码
class TestSort:
def setup(self):
self.data=[1,8,3,6,4,0]
self.expect_data=[0,1,3,4,6,8]
'''冒泡排序'''
def bubble_sort(self,data : list):
size=len(data)
for i in range(size):
for j in range(size-i-1):
if data[j] > data[j+1]:
data[j],data[j+1]=data[j+1],data[j]
return data
'''选择排序'''
def selection_sort(self,data:list):
size=len(data)
for i in range(size):
min_id=i
for j in range(i+1,size):
if data[min_id]>data[j]:
min_id = j
data[i],data[min_id]=data[min_id],data[i]
min_id=i#很多人会忽略这行
return data
'''验证冒泡排序'''
def test_bubble(self):
assert self.expect_data==self.bubble_sort(self.data)
'''验证选择排序'''
def test_selevtion(self):
assert self.expect_data==self.selection_sort(self.data)