用python双向冒泡排序,测试的数组为{8,1,20,9,10,3}
时间: 2024-05-14 08:15:42 浏览: 14
好的,以下是用 Python 实现双向冒泡排序的代码,可以测试输入的数组 {8,1,20,9,10,3}:
```python
def cocktail_sort(arr):
n = len(arr)
left, right = 0, n - 1
while left < right:
# 从左向右冒泡
for i in range(left, right):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
right -= 1
# 从右向左冒泡
for i in range(right, left, -1):
if arr[i - 1] > arr[i]:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
left += 1
return arr
# 测试
arr = [8, 1, 20, 9, 10, 3]
sorted_arr = cocktail_sort(arr)
print(sorted_arr) # 输出 [1, 3, 8, 9, 10, 20]
```
相关问题
用python写一个冒泡排序,测试的数组为{8,1,20,9,10,3}
当然,我很乐意回答你的问题!以下是用Python写冒泡排序的代码:
```python
def bubble_sort(arr):
n = len(arr)
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 = [8, 1, 20, 9, 10, 3]
print(bubble_sort(arr))
```
输出结果为:`[1, 3, 8, 9, 10, 20]`。
希望这个答案对你有帮助!
用python写几个排序,分别是冒泡排序,选择排序,插入排序,双向冒泡排序,测试的数组为{8,1,20,9,10,3}
好的,有关python的排序算法,以下是四种排序算法的示例(冒泡排序,选择排序,插入排序和双向冒泡排序):
1. 冒泡排序:
def bubble_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already sorted
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
# Example usage
arr = [8,1,20,9,10,3]
sorted_arr = bubble_sort(arr)
print(sorted_arr)
2. 选择排序:
def selection_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# 查找未排序部分中的最小值
min_idx = i
for j in range(i+1, n):
if arr[min_idx] > arr[j]:
min_idx = j
# 将最小元素与未排序部分的第1个元素进行交换
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
# Example usage
arr = [8,1,20,9,10,3]
sorted_arr = selection_sort(arr)
print(sorted_arr)
3. 插入排序:
def insertion_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(1, n):
key = arr[i]
# 与已排序部分的元素进行比较,找到插入位置
j = i-1
while j >=0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
# Example usage
arr = [8,1,20,9,10,3]
sorted_arr = insertion_sort(arr)
print(sorted_arr)
4. 双向冒泡排序(鸡尾酒排序):
def cocktail_sort(arr):
n = len(arr)
swapped = True
start = 0
end = n-1
while (swapped == True):
#逆向的遍历,将较大值放到最后
swapped = False
for i in range (start, end):
if (arr[i] > arr[i + 1]) :
arr[i], arr[i + 1]= arr[i + 1], arr[i]
swapped = True
#如果没有元素交换,则已经排序好
if (swapped == False):
break
#正向的遍历,将较小值放到最前面
swapped = False
end = end-1
for i in range(end-1, start-1,-1):
if (arr[i] > arr[i + 1]):
arr[i], arr[i + 1] = arr[i + 1], arr[i]
swapped = True
start = start+1
return arr
# Example usage
arr = [8,1,20,9,10,3]
sorted_arr = cocktail_sort(arr)
print(sorted_arr)
希望这些例子可以帮到您!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)