这节课我们对于冒泡排序法的课后习题进行一下解答:
回顾一下我们的题目:
上节课我们学习的冒泡排序法,是让我们的list从小到大进行排列,这次我们的任务是,请对冒泡排序法进行一定的修改,加一个参数,让它能够按照我们的定义需要进行从大到小或者从小到大的排序。返回这个排序后的list。
下面是我们需要实现的一些例子,从例子中你可以了解到第二个参数的一些定义规则。假定输入的参数没有错误等问题。
函数调用命令
返回值
bubbleSort([37,87,12,3,0],1)
[0, 3, 12, 37, 87]
bubbleSort([7,8,123,33,1],2)
[123, 33, 8, 7, 1]
bubbleSort([3411,5,32,57,521],1)
[5, 32, 57, 521, 3411]
解析:
这道题很神奇让我们比之前多加了一个参数,使得我们可以通过参数来控制返回的list是从大到小还是从小到大排列。我们可以从要实现的例子中发现丝丝端倪,那就是第二个参数如果是1的时候,返回的list就会从小到大排列,如果是2,就会从大到小排列,明白这一点之后,新定义的参数就很容易弄出来了。
我们需要对新定义的参数进行判断,是1则在判断前一个数大于后一个数的时候才交换位置,是2则在判断前一个数小于后一个数的时候才进行交换。
以下是最后的参考代码:
def bubbleSort(nums, k):
# 请修改代码成题目要求的样子
for i in range(len(nums)-1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums)-i-1): # j为列表下标
if k == 1:
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
elif k == 2:
if nums[j] < nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums
# 测试代码
print("testing bubbleSort for ([37,87,12,3,0],1) result:" + str(bubbleSort([37,87,12,3,0],1)))
print("testing bubbleSort for ([7,8,123,33,1],2) result:" + str(bubbleSort([7,8,123,33,1],2)))
print("testing bubbleSort for ([3411,5,32,57,521],1) result:" + str(bubbleSort([3411,5,32,57,521],1)))
以下是我们的视频教程:
在线观看:
高清源文件下载:
内容已经隐藏,请注册为本站会员后查看
感谢大家的收看,我们下期再见!