Python冒泡排序:如何将元素排序至新数组并正确使用append函数
解决冒泡排序结果存入新数组b的问题
你的代码已经完成了对数组a的降序冒泡排序,但因为完全没对b做任何元素添加操作,所以print(b)才会输出空列表。这里给你两种可行的修改方案:
方案1:直接复用排序后的原数组a
既然代码已经把a排序好了,只需要在排序完成后把a的元素存入b即可。可以用append逐个添加,或者直接复制数组:
a = [1,6,8,5,3] b = [] n = len(a) for i in range(n-1): for j in range(0, n-i-1): if a[j] < a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] # 用append逐个添加元素到b for num in a: b.append(num) # 或者直接复制数组,更简洁:b = a.copy() print(b) # 输出 [8,6,5,3,1]
方案2:不修改原数组a,排序临时数组后存入b
如果不想改动原数组a,可以先复制一份a到临时数组,排序临时数组后再把元素存入b:
a = [1,6,8,5,3] b = [] temp = a.copy() # 复制原数组,避免修改a n = len(temp) for i in range(n-1): for j in range(0, n-i-1): if temp[j] < temp[j + 1]: temp[j], temp[j + 1] = temp[j + 1], temp[j] # 把排序后的临时数组元素添加到b for num in temp: b.append(num) print(b) # 输出 [8,6,5,3,1] print(a) # 原数组保持不变:[1,6,8,5,3]
补充说明
如果需要升序排序,只需要把判断条件改成if a[j] > a[j + 1]即可,后续存入b的逻辑不变。
内容的提问来源于stack exchange,提问作者Sofie Zippay
相关产品推荐
相关产品推荐

