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

Posted 空中旋转篮球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Python NumPy 学习记录冒泡排序和List中sort方法计算时间对比的主要内容,如果未能解决你的问题,请参考以下文章

python冒泡排序

python冒泡算法

Python学习心得——基础知识

快速排序算法回顾 --冒泡排序Bubble Sort和快速排序Quick Sort(Python实现)

冒泡选择插入归并希尔等排序算法的Python实现

交换排序之冒泡排序和快速排序