def bubble(List): for j in range(________,0,-1): for i in range(0,j): if List[i]>List[i+1]:List[i],List[i+1]=List[i+1],List[i] return List testlist = [49, 38, 65, 97, 76, 13, 27, 49] print( bubble(testlist))
时间: 2024-04-02 12:37:37 浏览: 70
python编程老师面试题_python面试题五:Python编程
5星 · 资源好评率100%
这段代码实现了冒泡排序算法,用于对一个列表进行升序排序。下面是代码中两个循环的运算过程:
1. 外层循环使用 range 函数从 len(List)-1 到 0 反向遍历,表示每次将未排序部分的最大值“冒泡”到排序部分的最后面。
2. 内层循环使用 range 函数从 0 到 j-1 遍历未排序部分,判断相邻两个元素的大小关系,如果前面的元素大于后面的元素,则交换它们的位置。
3. 完成一轮内层循环后,未排序部分的最大值就被“冒泡”到了排序部分的最后面。
4. 循环执行直到未排序部分为空,即 j=0。
以 testlist = [49, 38, 65, 97, 76, 13, 27, 49] 为例,运算过程如下:
1. 第一次外层循环,j=7,即将未排序部分的最大值“冒泡”到序列的最后面。
内层循环遍历到 i=0,发现 List[0]>List[1],因此交换它们的位置,List 变为 [38, 49, 65, 97, 76, 13, 27, 49]。
内层循环遍历到 i=1,发现 List[1]>List[2],因此交换它们的位置,List 变为 [38, 49, 65, 97, 76, 13, 27, 49]。
内层循环遍历到 i=2,发现 List[2]<List[3],不做任何操作。
内层循环遍历到 i=3,发现 List[3]>List[4],因此交换它们的位置,List 变为 [38, 49, 65, 76, 97, 13, 27, 49]。
内层循环遍历到 i=4,发现 List[4]>List[5],因此交换它们的位置,List 变为 [38, 49, 65, 76, 13, 97, 27, 49]。
内层循环遍历到 i=5,发现 List[5]>List[6],因此交换它们的位置,List 变为 [38, 49, 65, 76, 13, 27, 97, 49]。
内层循环遍历到 i=6,发现 List[6]>List[7],因此交换它们的位置,List 变为 [38, 49, 65, 76, 13, 27, 49, 97]。
完成一轮内层循环,此时未排序部分的最大值 97 已经“冒泡”到序列的最后面。
2. 第二次外层循环,j=6,即将未排序部分的最大值“冒泡”到序列的倒数第二个位置。
内层循环遍历到 i=0,发现 List[0]<List[1],不做任何操作。
内层循环遍历到 i=1,发现 List[1]<List[2],不做任何操作。
内层循环遍历到 i=2,发现 List[2]>List[3],因此交换它们的位置,List 变为 [38, 49, 65, 13, 76, 27, 49, 97]。
内层循环遍历到 i=3,发现 List[3]>List[4],因此交换它们的位置,List 变为 [38, 49, 65, 13, 27, 76, 49, 97]。
内层循环遍历到 i=4,发现 List[4]<List[5],不做任何操作。
内层循环遍历到 i=5,发现 List[5]>List[6],因此交换它们的位置,List 变为 [38, 49, 65, 13, 27, 49, 76, 97]。
完成一轮内层循环,此时未排序部分的最大值 76 已经“冒泡”到序列的倒数第二个位置。
3. 以此类推,直到完成所有的外层循环,testlist 被排序为 [13, 27, 38, 49, 49, 65, 76, 97]。
阅读全文