【基数排序~语录】


基数排序~python语录:

# -*- coding = utf-8 -*-
# @Time : 2022/5/19 19:38
# @Author : lxw_pro
# @File : py-21.py
# @Software : PyCharm

# 基数排序:
'''0
基数排序基本思想:
是一种无需进行关键字比较的新排序方法,其基本操作是“分配”和“收集”。
也叫桶排序或箱排序:设置若干个箱子,将关键字为k的记录放入第k个箱子,
然后按序号将非空的连接。(这个桶用队列来实现。)

基数排序:
如果待排序的数字是有范围的,均由0~9这十个数字组成,
则只需要设置十个箱子,相继按个、十、百...进行排序。

'''


li = [275, 104, 930, 569, 154, 502, 219, 7, 76]
# 第一趟分配(按个位):   ~把每个数的个位放入到相对应的桶中
# 收集结果: [502, 104, 7, 219, 930, 154, 66, 569, 275, 76]


# 第二趟分配(按十位):   ~把每个数的十位放入到相对应的桶中
# 收集结果: [502, 104, 7, 219, 930, 154, 66, 569, 275, 76]


# 第三趟分配(按百位):   ~把每个数的百位放入到相对应的桶中
# 收集结果: [7, 66, 76, 104, 154, 219, 275, 502, 569, 930]

总结:

先按个位排序,再按十位排序,再按百位排序。
是一个多关键字的排序。
基数排序适合多关键字排序。


1~基数排序原理:

'''
基数排序是按组成关键字的各位的值进行分配和收集,
与前面介绍的排序方法不同,
它无需进行关键字之间的比较。

设关键字有d位,每位的取值范围为r(称为基数),
则需要进行d趟分配与收集,需要设立r个队列。
例如,若每位是十进制数字,则需要 设立10个队列,
若每位由小写字母组成,则要设立26个队列。

'''

2~基数排序的算法步骤:

'''
1-从关键字的低位开始进行第i趟(i=1, 2, ..., d)分配即将单链表中的记录依次按关键字的第i位分配到相应编号的队列中;
2-分配完毕后,将各队列的记录将队列编号顺序收集成一个单链表;
3-上一趟形成的链队,作为下一趟地输入,重复(1)(2),直到第d趟收集完毕,所得单链表已成为有序表。

'''

3~基数排序算法分析

'''
1-基数排序的基本操作是“分配”和“收集”,而不是关键字之间的比较;
2-基数排序要进行d趟分配和收集,需r个队列;
3-基数排序是稳定的,其时间复杂度为O(d*(n+r)),其中n是记录数,d是关键字的位数,r是关键字各位的值域;
4-空间复杂度O(n+r)。

'''

江湖一现:

我迈过人间万物,从不慌张,唯独你踏过山水,归来那一刻,我方寸大乱。


持续更新中…

猜你喜欢

转载自blog.csdn.net/m0_66318554/article/details/124783425
今日推荐