对随机生成并且打乱的arr从小到大依次进行冒泡排序,快速排序,插入排序和希尔排序算法的补全,并跑通代码,保留log信息
温馨提示:不用sorded()等函数。
第一种:冒泡排序
# 随机生成
import numpy as np
#冒泡排序
def bubble_sort(nums):
for i in range(1,len(nums)):
for j in range(0,len(nums)-i):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
return nums
if __name__ == '__main__':
# 打乱顺序并随机生成
nums=np.random.permutation(20)
print(bubble_sort(nums))
运行结果大致是这样:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
第二种 :快速排序
# 随机生成
import numpy as np
#快速排序
def quickSort(arr):
if arr==[]:
return []
else:
small = [x for x in arr[1:] if x < arr[0]]
big = [x for x in arr[1:] if x >= arr[0]]
return quickSort(small)+[arr[0]]+quickSort(big)
if __name__ == '__main__':
nums=np.random.permutation(20)
print(quickSort(nums))
运行结果大致是这样的:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
第三种:希尔排序
# 随机生成
import numpy as np
#希尔排序
def shellSort(arr):
length = len(arr)
gap = length // 2
while gap >= 1:
for j in range(gap,length):
i = j
while(i - gap) >= 0:
if arr[i] < arr[i - gap]:
arr[i],arr[i-gap]=arr[i-gap],arr[i]
i -= gap
else:
break
gap //=2
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print(shellSort(nums))
运行结果大致是这样的:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
第四种:插入排序
# 随机生成
import numpy as np
#插入排序
def insertionSort(arr):
for i in range(len(arr)):
cur_index = i
while arr[cur_index-1] > arr[cur_index] and cur_index-1 >= 0:
arr[cur_index], arr[cur_index-1] = arr[cur_index-1], arr[cur_index]
cur_index -= 1
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print(insertionSort(nums))
运行结果大致是这样的:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
跟着飞桨学python真挺不错鸭,一下子看懂了四个排序嘿嘿,有兴趣的可以试一试的哦