一个合格的算法工程师应该具有熟练写各种排序算法的本领
1,快速排序(n*logn)
主要就是划分过程,即选取一个值将list中不大于该数的放在该数左边,不小于该数的放在该数右边,然后分别对左右两个区间递归划分。
def sortmy(arr, low, high):
if low < high:
n = partition(arr, low, high)
sortmy(arr, low, n - 1)
sortmy(arr, n+1, high)
def partition(arr, low, high):
key = arr[low]
while low < high:
while low < high and arr[high] >= key:
high -= 1
arr[low] = arr[high]
while low < high and arr[low] <= key:
low += 1
arr[high] = arr[low]
arr[low] = key
return low
arr = list(map(int, input().split()))
sortmy(arr, 0, len(arr) - 1)
print(arr)
2, 冒泡排序(n^2)
每次循环将最大的值放在数组最后
def sortmy(arr, n):
while n:
for i in range(n-1):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
n -= 1
arr = list(map(int, input().split()))
sortmy(arr, len(arr))
print(arr)
来源:https://blog.csdn.net/z13653662052/article/details/100079771