Python实现冒泡排序,快速排序,插入排序和希尔排序算法
目录
前言
这些排序算法以前都用C++实现过,这里记录一下飞桨领航团AI达人养成营下的作业。
下面是一些是个人觉得对这些算法写的还不错博客
六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
一、冒泡排序
# 随机生成
import numpy as np
#请把冒泡排序算法补充完整
def bubble_sort(nums):
'''
代码补充
'''
for i in range(len(nums)-1):
for j in range(i, len(nums)):
if nums[i] > nums[j]:
k = nums[i]
nums[i] = nums[j]
nums[j] = k
return nums
if __name__ == '__main__':
# 打乱顺序并随机生成
nums=np.random.permutation(20)
print(nums)
print(bubble_sort(nums))
二、快速排序
# 随机生成
import numpy as np
#请把快速排序算法补充完整
def quickSort(arr):
'''
代码补充
'''
if len(arr) < 2:
return arr
tmp = arr[0]
smaller_arr = [i for i in arr[1:] if i <= tmp]
bigger_arr = [i for i in arr[1:] if i > tmp]
return quickSort(smaller_arr) + [tmp] + quickSort(bigger_arr)
if __name__ == '__main__':
nums=np.random.permutation(20)
print(nums)
print(quickSort(nums))
三、插入排序
# 随机生成
import numpy as np
#请把插入排序算法补充完整
def insertionSort(arr):
'''
代码补充
'''
for i in range(1, len(arr)):
tmp = arr[i]
j = i-1
while tmp < arr[j] and j>=0:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = tmp
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print(nums)
print(insertionSort(nums))
四、希尔排序
# 随机生成
import numpy as np
#请把希尔排序算法补充完整
def shellSort(arr):
'''
代码补充
'''
group = len(arr)
while group:
group //= 2
for i in range(0, len(arr) - group):
tmp = arr[i + group]
j = i
while tmp < arr[j] and j>=0:
arr[j+group] = arr[j]
j -= group
arr[j+group] = tmp
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print(nums)
print(shellSort(nums))