赞
踩
近期试图用python复现一些由Java和C++编写的经典算法,本以为可以很快搞定,未曾想实际操作起来竟是举步维艰,这让本人切身感受到了python让人头痛的难以移植的属性,也切实体会到了自身能力的不足,于是决定尝试一种新的方式来促进自己进步。想来自己也在CSDN混迹多年了,从电气到IT,从硬件到软件,至今未写过一篇博客,觉得甚是惭愧。今天姑且就开一个头,以后定期在这里总结自己的收获,以输出来促进输入。作为算法第一课,我将这篇博客内容确定为用python对各大经典排序算法进行复现,代码思想主要以左神算法为主,站在巨人的肩膀上才能更快的成长。
本文以codes为主,并带有部分注解,目前尚未完善,我将后续更新各大排序算法的空间复杂度、时间复杂度的分析,以及稳定性分析。废话不多说,上codes。
BucketSort:
def bucketsort(arr):
if not arr or len(arr) < 2:
return
# value is integer type and belong to [0,200]
max_value = sys.float_info.min
for i in range(len(arr)):
max_value = max(max_value, arr[i])
help_arr = [0 for i in range(max_value+1)]
for i in range(len(arr)):
help_arr[arr[i]] += 1
del arr[:]
for i in range(len(help_arr)):
while help_arr[i]:
arr.append(i)
help_arr[i] -= 1
BubbleSort:
def bubble_sort(arr0):
if not arr0 or len(arr0) < 2:
return
for i in reversed(range(len(arr0))):
for j in range(i):
if arr0[j] > arr0[j+1]:
arr0[j], arr0[j+1] =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。