栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

啊哈算法--排序算法 (python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

啊哈算法--排序算法 (python)

前言

这里主要给大家介绍的是啊哈算法中桶排序、冒泡排序和快速排序的python版本。

一、桶排序
book = [0 for _ in range(1001)] # 作为桶排序的桶
n = int(input())
nums = list(map(int, input().split()))
for i in range(n):
    book[nums[i]] += 1
# 输出
for i in range(1000,-1,-1): # 依次判断编号1000-0的桶看其内部是否存在元素
    for _ in range(book[i]):
        print(i, end = ' ')
"""
测试样例
10 
8 100 50 22 15 6 1 1000 999 0
"""
二、冒泡排序
# 输入
n = int(input())
nums = list(map(int,input().split()))
# 进行冒泡排序
for i in range(n-1): # n个数只用进行n-1遍
    for j in range(n-i-1): # 每遍历一次确定最后一个元素,下次需要判断的元素就少一个
        if nums[j] < nums[j+1]:
            nums[j], nums[j+1] = nums[j+1], nums[j]
print(nums)
"""
测试样例
10 
8 100 50 22 15 6 1 1000 999 0
"""
三、快速排序
def quicksort(left, right):
    if left > right:
        return
    i, j = left, right
    temp = nums[left] # temp保存的是基函数
    while i != j:
        # 要先从右往左遍历
        while nums[j]  >= temp and i < j:
            j -= 1
        # 在从左往右遍历
        while nums[i] <= temp and i 
 

总结

快速排序算法中的两个哨兵一定要先从右往左遍历,然后再从左往右遍历的,每次遍历完都将交换两个哨兵。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号