【排序~python实现】


排序

# -*- coding = utf-8 -*-
# @Time : 2022/6/2 08:20
# @Author : lxw_pro
# @File : py-23.py
# @Software : PyCharm

# 排序:
'''
排序:将一组“无序”的记录序列调整为“有序”的记录序列。
其存储器的不同,排序可分为两大类:
1~内部排序:
如: 1-插入排序:直接插入排序,折半插入排序,希尔排序;
    2-快速排序
    3-选择排序
    4-归并排序
    5-基数排序
2~外部排序

应用还是挺多的:
1-对学生成绩进行排序
2-对排序号的数据做二分查找
3-在Shopping中,按销量、好评率排序等等

排序的稳定性:
对序列中的两个相同的关键字在初始序列和最终有序序列中相对位置(即领先关系)是否变化。
如果可以通过算法设计,使得这两个关键字位置先后顺序不变,则称该排序方法是稳定的,反之,称为不稳定的。


'''


1~插入排序————直接插入排序

# 1~插入排序————直接插入排序:   ~最简单的排序方法
'''
基本思想:
依次将每个待排序的记录插入到一个有序序列的合适位置。

'''


def ins_sort(li):       # 直接插入排序
    c = len(li)         # li中所有元素的长度
    for i in range(1, c):       # 陆续插入元素(至少是一次,且总的次数为总长-1
        k = li[i]
        j = i - 1
        while j >= 0 and li[j] > k:     # 查找插入的位置
            li[j+1] = li[j]             # 元素后移
            li[j] = k
            j -= 1                      # 不可或缺,循环减少,直至顺序排好
    return li


li = [45, 34, 78, 12, 34, 29, 64]
print(ins_sort(li))                     # 运行结果:[12, 29, 34, 34, 45, 64, 78]


'''
算法分析:
直接插入排序的算法简洁,容易实现。

若待排序记录序列中出现各种可能排列的概率相同,则
可去上述最好情况和最坏情况的平均情况。
在平均情况下的关键字比较次数和记录移动次数约为n**2/4。
因此,直接插入排序的时间复杂度为O(n**2)。

'''

直接插入排序的总结:

# 直接插入排序的总结:
'''
1-直接插入排序的效率与待排文件的关键字排列有关
2-直接插入排序是稳定的
3-时间复杂度为O(n**2)
4-空间复杂度为O(1)

'''

2~插入排序————折半插入排序

# 2~插入排序————折半插入排序:
'''
由于是在有序子文件中确定插入的位置,
因此可用折半查找来代替插入排序法中的顺序查找,
从而可减少比较次数。

折半插入排序的时间复杂度仍为O(n**2),是稳定排序。

'''

python一天一点小基础

代码规范:

# 光速,每秒30万公里
speed_of_light = 300000

# 地球质量,5.97×10²⁴kg
mass_of_earth = 5970000000000000000000000

# 地球最深峡谷的海拔,10994m,因在地下,我们这里用负数表示
altitude_of_mariana_trench = -10994

print(speed_of_light)   # 运行结果:300000
print(mass_of_earth)    # 运行结果:5970000000000000000000000
print(altitude_of_mariana_trench)   # 运行结果:-10994

'''数据类型
注:
= 赋值运算符,表示变量的赋值,age = 20,age是20
== 比较运算符,表示等于,age == 20,age等于20
'''

上一章链接:选择排序


江湖一现:

生命是华丽错觉,时间是“小偷”,偷走一切。
大家端午快乐哦!一切顺心如意!记得吃粽子哟!


持续更新中

猜你喜欢

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