哪种排序算法能涵盖11种排序方法?
摘要:10种排序算法(Python实现) 冒泡排序 1、 两重循环,每次都将一个点移动到最终位置 def BubbleSort(lst): n=len(lst) if n<=1: return lst for i in ra
10种排序算法(Python实现)
冒泡排序
1、 两重循环,每次都将一个点移动到最终位置
def BubbleSort(lst):
n=len(lst)
if n<=1:
return lst
for i in range (0,n):
for j in range(0,n-i-1): # 每轮确定一个点的最终位置
if lst[j]>lst[j+1]:
(lst[j],lst[j+1])=(lst[j+1],lst[j])
return lst
x=input("请输入待排序数列:\n")
y=x.split()
arr=[]
for i in y:
arr.append(int(i))
arr=BubbleSort(arr)
#print(arr)
print("数列按序排列如下:")
for i in arr:
print(i,end=' ')
快速排序
快排具体算法执行流程如下:https://www.cnblogs.com/MOBIN/p/4681369.html
1、每次都会确定基准值的最终位置
2、快排使用到了,分页和递归
def QuickSort(lst):
# 此函数完成分区操作,并且返回该元素的最终位置
def partition(arr, left, right):
# 执行快排的过程
key = left # 使用第一个数为基准数
while left < right:
# 如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
while left < right and arr[right] >= arr[key]:
right -= 1
# 如果列表前边的数,比基准数小或相等,则后移一位直到有比基准数大的数出现
while left < right and arr[left] <= arr[key]:
left += 1
# 此时已找到一个比基准大的书,和一个比基准小的数,将他们互换位置
(arr[left], arr[right]) = (arr[right], arr[left])
# 当从两边分别逼近,直到两个位置相等时结束,将左边小的同基准进行交换
(arr[left], arr[key]) = (arr[key], arr[left])
# 返回目前基准所在位置的索引
return left
def quicksort(arr, left, right):
if left >= right:
return
# 获取一个元素的最终位置
mid = partition(arr, left, right)
# 递归调用
# print(arr)
quicksort(arr, left, mid - 1)
quicksort(arr, mid + 1, right)
# 主函数
n = len(lst)
if n <= 1:
return lst
quicksort(lst, 0, n - 1)
return lst
print("<<< Quick Sort >>>")
x = input("请输入待排序数列:\n")
y = x.split()
arr = []
for i in y:
arr.append(int(i))
arr = QuickSort(arr)
# print(arr)
print("数列按序排列如下:")
for i in arr:
print(i, end=' ')
插入排序(有序+无序)
插入排序算法流程:1 从第二个元素开始,第一个默认为有序,将取出的元素放到前面有序的队列中,放的时候是平移。n2时间复杂度。
