python实现编一个函数,用冒泡法对 n 个元素进行排序,参数中指定升 序或降序;在主程序调用该函数进行验证
时间: 2023-08-31 10:41:28 浏览: 114
### 回答1:
好的,这是一个使用冒泡法对列表中的元素进行排序的 Python 函数,可以指定升序或降序。
```
def bubble_sort(lst, ascending=True):
# 首先处理升序或降序的情况
if not ascending:
lst = [-x for x in lst]
n = len(lst)
for i in range(n):
for j in range(n - i - 1):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
# 再次处理升序或降序的情况
if not ascending:
lst = [-x for x in lst]
return lst
```
你可以在主程序中调用这个函数,并指定升序或降序。例如:
```
# 调用函数,对列表进行升序排序
lst = [5, 2, 3, 1, 4]
sorted_lst = bubble_sort(lst)
print(sorted_lst) # 输出:[1, 2, 3, 4, 5]
# 调用函数,对列表进行降序排序
lst = [5, 2, 3, 1, 4]
sorted_lst = bubble_sort(lst, ascending=False)
print(sorted_lst) # 输出:[5, 4, 3, 2, 1]
```
希望这个示例能帮到你。
### 回答2:
冒泡排序是一种简单的排序算法,通过多次比较和交换相邻元素的位置来实现排序。实现冒泡排序的函数如下所示:
```python
def bubble_sort(arr, order='asc'):
n = len(arr)
if order == 'asc':
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
elif order == 'desc':
for i in range(n):
for j in range(0, n-i-1):
if arr[j] < arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
```
该函数接受一个列表arr作为输入,同时可选地指定排序的方式,即按升序("asc")或降序("desc")进行排序。在函数内部,使用两个嵌套的for循环来遍历列表并比较相邻元素的大小,若顺序不符合要求则交换它们的位置。通过多次迭代,将最大或最小的元素移动到正确的位置上,从而实现排序。
在主程序中,可以调用该函数来验证其功能:
```python
numbers = [5, 2, 9, 1, 7, 3]
ascending_order = bubble_sort(numbers, order='asc')
descending_order = bubble_sort(numbers, order='desc')
print("升序排序结果:", ascending_order)
print("降序排序结果:", descending_order)
```
该代码中定义了一个包含6个整数的列表numbers,然后分别调用bubble_sort函数,一个指定升序排序,一个指定降序排序,并将排序后的结果分别赋值给ascending_order和descending_order。最后将两个排序结果打印输出到控制台。
运行该程序,输出的结果如下:
```
升序排序结果: [1, 2, 3, 5, 7, 9]
降序排序结果: [9, 7, 5, 3, 2, 1]
```
可以看到,根据不同的排序方式,函数成功地将列表中的元素进行了升序或降序排序。
阅读全文