虽然学习python和机器学习已经很久了,跟着【AI达人养成营】重新回顾这些知识还是很有意义的。分享一下排序的知识。
题目:这题很简单,对随机生成并且打乱的arr从小到大依次进行冒泡排序,快速排序,插入排序和希尔排序算法的补全。
# 随机生成
import numpy as np
#请把冒泡排序算法补充完整
def bubbleSort(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]
if __name__ == '__main__':
# 打乱顺序并随机生成
nums=np.random.permutation(20)
# 原始
print(nums)
bubbleSort(nums)
print(nums)
# 随机生成
import numpy as np
#请把快速排序算法补充完整
def quickSort(arr, start, end):
if start >= end: # 递归的退出条件
return
mid = arr[start]
low = start
high = end
while low < high:
while low < high and arr[high] >= mid:
high -= 1
arr[low] = arr[high]
while low < high and arr[low] < mid:
low += 1
arr[high] = arr[low]
arr[low] = mid
# 递归调用
quickSort(arr, start, low - 1)
quickSort(arr, low + 1, end)
if __name__ == '__main__':
print(nums)
nums=np.random.permutation(20)
quickSort(nums, 0, len(nums) - 1)
print(nums)
# 随机生成
import numpy as np
#请把希尔排序算法补充完整
def shellSort(arr):
n = len(arr)
gap = int(n/2)
while gap > 0:
for i in range(gap,n):
temp = arr[i]
j = i
while j >= gap and arr[j-gap] >temp:
arr[j] = arr[j-gap]
j -= gap
arr[j] = temp
gap = int(gap/2)
if __name__ == '__main__':
nums=np.random.permutation(20)
print(nums)
shellSort(nums)
print(nums)
# 随机生成
import numpy as np
#请把插入排序算法补充完整
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
if __name__ == '__main__':
nums=np.random.permutation(20)
print(nums)
insertionSort(nums)
print(nums)