利用Python实现将数列排序

本文介绍了一种自创的归纳排序法及插入排序法的具体实现。归纳排序法通过不断寻找并移除列表中的最小元素来完成排序,而插入排序法则通过逐步将每个元素插入到已排序序列中的合适位置来实现排序。

1.自己想的方法,算是个不伦不类的算法。虽然效率有点低,不过感觉还算稳定吧。遍历a中寻找最小值,然后放到列表 result中,再把a中的最小值删除,直到无法进行。暂且叫他归纳法吧
时间复杂度 O(n²)

def thesort(a):
    result=[]
    while len(a)>0:
        the_least = a[0]
        for i in range(1,len(a)):
            if the_least>a[i]:
                the_least = a[i]
        result.append(the_least)
        a.remove(the_least)
    print(a)
    return result
tList = [0,4,9,2,3,4,6,5]
print(thesort(tList))

2.排序法

def insertion_sort(list):
    for index in range(1,len(list)):
        value = list[index]
        i=index-1
        while i>=0 and (list[index]<list[i]):
            list[i+1],list[i]=list[i],value
            i=i-1
    return list
print(insertion_sort([0,4,8,5,3,6,9])


最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。最坏情况就是,序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。插入排序的赋值操作是比较操作的次数加上 (n-1)次。平均来说插入排序算法的时间复杂度为O(n²)。

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值