Python NumPy 学习记录(四)冒泡排序和List中sort方法计算时间对比

1.冒泡排序算法

冒泡排序的原理如下:

1. 比较相邻的两个元素。如果第一个比第二个大则交换他们的位置(升序排列,降序则反过来)。

2. 从列表的开始一直到结尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。

3. 重复上一步,继续从列表开头依次对相邻元素进行比较。已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。

4. 继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。每轮需要比较的元素个数会递减,一直到只剩一个元素没有“冒泡”时(没有任何一对元素需要比较),则列表排序完成。
原文链接:https://blog.csdn.net/weixin_43790276/article/details/104033622

图来自:十大经典排序算法总结(Java实现+动画)

2.时间对比

代码如下:

import datetime
from numpy import random

class sorts:
    def __init__(self,array):
        self.array=array
        
    def bubblesort(self):
        sort_array=self.array
        length=len(sort_array)
        for i in range(length):
            for j in range(0,length-i-1):
                if sort_array[j]>sort_array[j+1]:
                    sort_array[j],sort_array[j+1]=sort_array[j+1],sort_array[j]                         
        print(self.array)   

array0=[]
for i in range(10000):
    array0.append(random.randint(0,10000))

s1=sorts(array0)
startTime=datetime.datetime.now()
print(startTime)
s1.bubblesort()
endTime=datetime.datetime.now()
print(endTime)
print(endTime-startTime)

print(startTime)
array0.sort()
endTime=datetime.datetime.now()
print(endTime)
print(endTime-startTime)

10000个数字排序结果:

2021-06-10 08:50:18.416549
0:00:07.233039
2021-06-10 08:50:11.183510
2021-06-10 08:50:18.475420
0:00:07.291910

10万个数字排序结果:

2021-06-10 09:09:53.527205
0:10:54.740252
2021-06-10 08:58:58.786953
2021-06-10 09:09:53.580073
0:10:54.793120

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值