小编给大家分享一下Python中冒泡排序、快速排序、堆排序的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、冒泡排序
def bubble_sort(array, n):
for i in range(n):
for j in range(1, n - i):
if array[j - 1] > array[j]:
array[j - 1], array[j] = array[j], array[j - 1]
2、快速排序
def quick_sort(array, l, r):
if l < r:
q = partition(array, l, r)
quick_sort(array, l, q - 1)
quick_sort(array, q + 1, r)
def partition(array, l, r):
x = array[r]
i = l
for j in range(l, r):
if array[j] <= x:
array[i], array[j] = array[j], array[i]
i += 1
array[i], array[r] = array[r], array[i]
return i
3、堆排序
注意堆排序外面还有一个在下面测试部分的循环。
# 堆排序
def heap_sort(array, n, length):
l = 2*n + 1
r = 2*n + 2
if l <= length - 1:
heap_sort(array, l, length)
if r <= length - 1:
heap_sort(array, r, length)
if l >= length:
return
index = l
if r < length and array[r] > array[l]:
index = r
if array[n] < array[index]:
array[n], array[index] = array[index], array[n]
4、测试部分
if __name__ == '__main__':
a = input("输入数组元素:").split(" ")
a = list(map(int, a))
b = a.copy()
c = a.copy()
# 冒泡排序
bubble_sort(a, len(a))
print(a)
# 快速排序
quick_sort(b, 0, len(b) - 1)
print(b)
# 堆排序
for i in range(len(c)):
heap_sort(c, 0, len(c) - i)
c[0], c[len(c) - i - 1] = c[len(c) - i - 1], c[0]
print(c)
5、测试结果
输入数组元素:4 8 3 6 7 1 5
[1, 3, 4, 5, 6, 7, 8]
[1, 3, 4, 5, 6, 7, 8]
[1, 3, 4, 5, 6, 7, 8]
Process finished with exit code 0
以上是“Python中冒泡排序、快速排序、堆排序的实现方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.py.cn/jishu/jichu/21766.html