用python写几个排序,分别是冒泡排序,选择排序,插入排序,双向冒泡排序,测试的数组为{8,1,20,9,10,3}
时间: 2024-05-29 20:13:28 浏览: 57
好的,有关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)
希望这些例子可以帮到您!
阅读全文