冒泡排序:

 冒泡排序就是每次找出最大(最小)元素,放在集合最前或最后,这是最简单的排序算法

def bubble_sort(collection):
#升序排列
length=len(collection)
for s in range(length-1):#可以假设只有一个元素的情况,这样可以直接返回
flage=True#应该放在这里,而不是上面
for i in range(length-1-s):
if collection[i]>collection[i+1]:#前者大需要换位置,并需要判断他是否是最大的
flage=False
collection[i],collection[i+1]=collection[i+1],collection[i]
# print("排序第",s+1,"轮之后:",collection)#print()好占时间啊
# i++#i是自动递增的,我竟然写出如此愚蠢的
if flage:
break
return collection

  特点:是稳定的 T(n)=O(n^2) 原地排序

  内层循环的操作是O(1)的,共执行n-1轮循环,每轮分别执行(n-1,n-2....1)=(n-1)(n-1+1)/2

双向冒泡排序:

  双向冒泡排序又称为:鸡尾酒排序

  双向冒泡作为冒泡排序的轻微改进,主要的不同就在于遍历元素时不只有从前到后,而是在遍历到序列的队尾时,按照从后向前在遍历到队头。

  以序列(2,3,4,5,1)为例,鸡尾酒排序只需要访问一次序列就可以完成排序,但如果使用冒泡排序则需要四次。但是在随机数序列的状态下,鸡尾酒排序与冒泡排序的效率都很差劲。

def bidirectional_bubble_sort3(collection):
length=len(collection)
disorder_start_index=0
disorder_end_index=length-1 while disorder_start_index<disorder_end_index:
#正序
flage=False
#先让初始的两个有序
if collection[disorder_start_index]>collection[disorder_start_index+1]:
collection[disorder_start_index],collection[disorder_start_index+1]=collection[disorder_start_index+1],collection[disorder_start_index] for i in range(disorder_start_index+1,disorder_end_index):
#一次找两个最大的元素,为什么是两个,因为不用第二次比较,假如比这两个中的第一个大就让第一个向后挪,如果比第一个小,就和第二个比较
if collection[i]>collection[i+1]:
collection[i],collection[i+1]=collection[i+1],collection[i]
flage=True
if collection[i]<collection[i-1]:
collection[i],collection[i-1]=collection[i-1],collection[i] disorder_end_index-=2
if collection[disorder_end_index]<collection[disorder_end_index-1]:
collection[disorder_end_index],collection[disorder_end_index-1]=collection[disorder_end_index-1],collection[disorder_end_index] for j in range(disorder_end_index-1,disorder_start_index,-1):
if collection[j]<collection[j-1]:
collection[j],collection[j-1]=collection[j-1],collection[j]
flage=True
if collection[j]>collection[j+1]:
collection[j],collection[j+1]=collection[j+1],collection[j]
disorder_start_index+=2
if not flage:
break
return collection

  算法分析:最坏时间复杂度O(n^2)  、平均时间复杂度O(n^2)、最优时间复杂度O(n)

但如果序列在一开始已经大部分排序过的话,会接近

对比

  与冒泡相比,比冒泡快20%,时间是冒泡的80%

详细数据:[-0.01099324226, -0.01499199867, -0.01399159431, -0.01399326324, -0.01499223709, -0.01399183273, -0.01599097252, -0.01499199867, -0.0160036087, -0.01500368118, -0.01399087906, -0.014993667
6, -0.01599144936, -0.014991045, -0.01399230957, -0.01599121094, -0.01401019096, -0.01300311089, -0.01602697372, -0.01500558853, -0.01799058914, -0.01498985291, -0.01596426964, -0.01299071312, -0.01600933075, -0.01598501205, -0.01598405838, -0.01801800728, -0.0170276165, -0.01397919655, -0.01600432396, -0.13593554497, -0.01498842239, -0.01499223709, -0.01497864723, -0.01601624489, -0.01398897171, -0.01598596573, -0.01599144936, -0.01600551605, 0.05896472931, -0.01797199249, -0.01601552963, -0.01200699806, -0.01499462128, -0.0159740448, -0.01597189903, -0.01500415802, -0.01497507095, -0.01597762108, -0.0139913559, -0.01595687866, -0.00696969032, -0.01799035072, -0.01097488403, -0.01895284653, -0.01496243477, -0.01797008514, -0.0159766674, -0.02300024033, -0.0159907341, -0.02098846436, -0.01899337769, -0.008010149, -0.02000403404, -0.01698970795, -0.01698923111, -0.02098751068, -0.01400947571, -0.03299713135, -0.22087359428, -0.0069963932, -0.15491271019, -0.00699687004, -0.01550579071, -0.014991045, -0.01399278641, -0.0089943409, -0.01499080658, -0.04297423363, -0.01499080658, -0.01399040222, -0.01799154282, -0.01499199867, -0.01998782158, -0.01599144936, -0.01299262047, -0.01598978043, -0.01399302483, -0.01399111748, -0.01199412346, -0.01499032974, -0.0169904232, -0.01698660851, -0.01517891884, -0.0129904747, -0.01498866081, -0.01398968697, -0.01742386818, -0.01702928543]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-bubble_sort)(正数代表你是个弟弟)是:-0.01958100796
前者(bidirectional_bubble_sort3)平均运行时间0.06751573801,后者(bubble_sort)平均运行时间0.08709674597,前者约是后者的0.7752倍

   与快排相比:是快排的40倍

详细数据:[0.0679602623, 0.06796073914, 0.06896018982, 0.06798624992, 0.06896018982, 0.06895971298, 0.06896018982, 0.068972826, 0.06895947456, 0.06896018982, 0.06698727608, 0.06896114349, 0.06997680
664, 0.06896066666, 0.06794142723, 0.06797409058, 0.06996369362, 0.06894779205, 0.0699737072, 0.06796240807, 0.0689599514, 0.06696033478, 0.06995916367, 0.067943573, 0.06797242165, 0.06894803047, 0.06996655464, 0.06995368004, 0.06894516945, 0.06995940208, 0.06997895241, 0.06897211075, 0.0689599514, 0.06996059418, 0.06997251511, 0.06896066666, 0.06797456741, 0.06994271278, 0.0689458847, 0.06895947456, 0.06995916367, 0.07095837593, 0.06696271896, 0.07195830345, 0.06699585915, 0.07095932961, 0.06895923615, 0.06896018982, 0.06796050072, 0.06794905663, 0.06894779205, 0.06796050072, 0.06897377968, 0.07295536995, 0.0699596405, 0.06796121597, 0.06897592545, 0.06894993782, 0.0709373951, 0.0689599514, 0.06894612312, 0.07094478607, 0.06897330284, 0.06898331642, 0.06896018982, 0.06796145439, 0.06896018982, 0.0699596405, 0.07095837593, 0.06897234917, 0.06796836853, 0.06696081161, 0.06894207001, 0.06794261932, 0.06796050072, 0.0699596405, 0.06895637512, 0.06997203827, 0.06797218323, 0.0689599514, 0.06994652748, 0.06996011734, 0.06895565987, 0.06996059418, 0.0679602623, 0.06997108459, 0.07096338272, 0.06796073914, 0.06995820999, 0.06895947456, 0.06698918343, 0.06798553467, 0.0679731369, 0.06894683838, 0.06894683838, 0.06796240807, 0.06994342804, 0.06796813011, 0.06895875931, 0.0689599514]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-quick_sort2)(正数代表你是个弟弟)是:0.06901133537
前者(bidirectional_bubble_sort3)平均运行时间0.07079039812,后者(quick_sort2)平均运行时间0.00177906275,前者约是后者的39.7908倍

  与归并相比:是归并的将近20倍

详细数据:[0.06596302986, 0.06396269798, 0.06496167183, 0.06296300888, 0.06696891785, 0.06696009636, 0.06396341324, 0.06496405602, 0.06996130943, 0.0649638176, 0.06496357918, 0.06296420097, 0.065960
88409, 0.06196498871, 0.06296205521, 0.06596231461, 0.06596207619, 0.06496143341, 0.06396269798, 0.06396341324, 0.06496334076, 0.06496286392, 0.06296300888, 0.06396245956, 0.06396341324, 0.06396436691, 0.06796193123, 0.065959692, 0.06496143341, 0.06296300888, 0.06396269798, 0.06596088409, 0.06596183777, 0.06396245956, 0.06296300888, 0.06496238708, 0.06296253204, 0.0619635582, 0.06498837471, 0.06597709656, 0.06596016884, 0.06496167183, 0.06596231461, 0.06596708298, 0.06594824791, 0.06596112251, 0.06496214867, 0.06596660614, 0.06595754623, 0.06694293022, 0.06396174431, 0.06696128845, 0.06496310234, 0.06694960594, 0.0669362545, 0.06598424911, 0.06396317482, 0.06596112251, 0.06698656082, 0.06597089767, 0.06496024132, 0.06597447395, 0.06598377228, 0.06596159935, 0.06494235992, 0.06496167183, 0.06596207619, 0.06496191025, 0.0649638176, 0.06696105003, 0.06596183777, 0.06496334076, 0.06496286392, 0.06396198273, 0.0649626255, 0.06296253204, 0.06496238708, 0.06496167183, 0.06596207619, 0.0639629364, 0.06396317482, 0.06496405602, 0.06498575211, 0.0659661293, 0.06595015526, 0.06397628784, 0.06495499611, 0.06293916702, 0.06493544579, 0.06596136093, 0.06498217583, 0.06496167183, 0.06596159935, 0.07195830345, 0.06396317482, 0.06396317482, 0.06596207619, 0.06396174431, 0.06796145439, 0.06496310234]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-merge_sort3)(正数代表你是个弟弟)是:0.06517270088
前者(bidirectional_bubble_sort3)平均运行时间0.06887008905,后者(merge_sort3)平均运行时间0.00369738817,前者约是后者的18.6267倍

  与希尔排序相比:是希尔排序的20倍

(sort) λ python some_sort.py
详细数据:[0.06496214867, 0.06596159935, 0.06496286392, 0.06596207619, 0.06596207619, 0.06596112251, 0.06596136093, 0.06596660614, 0.06595993042, 0.06596326828, 0.06596112251, 0.06495976448, 0.06595
9692, 0.06696224213, 0.06498074532, 0.06692624092, 0.06395316124, 0.06694364548, 0.0659430027, 0.06797099113, 0.06594872475, 0.06396269798, 0.06598711014, 0.06498837471, 0.06596064568, 0.06395316124, 0.06495904922, 0.06698966026, 0.06594347954, 0.06594467163, 0.06598091125, 0.06594276428, 0.06594419479, 0.06496310234, 0.06895804405, 0.06596207619, 0.06496310234, 0.06496286392, 0.06696081161, 0.0669438839, 0.06593418121, 0.06594896317, 0.06699919701, 0.06696796417, 0.06695199013, 0.06596136093, 0.06498599052, 0.06496667862, 0.0659570694, 0.06391382217, 0.06594276428, 0.06597590446, 0.06693482399, 0.06596422195, 0.06694245338, 0.06696128845, 0.06497645378, 0.06500053406, 0.0659506321, 0.06793618202, 0.06594920158, 0.06596231461, 0.06797528267, 0.06598067284, 0.06594944, 0.06494998932, 0.06796479225, 0.06596183777, 0.06696128845, 0.06696081161, 0.0669798851, 0.06598258018, 0.06399250031, 0.06494641304, 0.0649895668, 0.06396317482, 0.06596374512, 0.06497192383, 0.06594514847, 0.06493616104, 0.06497645378, 0.0669503212, 0.06594324112, 0.06494402885, 0.06694865227, 0.06499385834, 0.06397032738, 0.06497907639, 0.06594586372, 0.0649497509, 0.06598567963, 0.06594824791, 0.0649626255, 0.06596302986, 0.06594586372, 0.06493163109, 0.06696295738, 0.06597995758, 0.06499958038, 0.06696271896]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-shell_sort3)(正数代表你是个弟弟)是:0.06586106062
前者(bidirectional_bubble_sort3)平均运行时间0.06919025183,后者(shell_sort3)平均运行时间0.00332919121,前者约是后者的20.7829倍

  与插入排序相比:比插入慢,是其时间的2倍左右

详细数据:[0.03499317169, 0.03396701813, 0.03796577454, 0.03499388695, 0.03595423698, 0.03402686119, 0.03399848938, 0.03696060181, 0.03297901154, 0.03497552872, 0.03296375275, 0.03398108482, 0.03396
248817, 0.03596591949, 0.03400611877, 0.03496527672, 0.03300404549, 0.03499364853, 0.03499746323, 0.03499794006, 0.03396677971, 0.03300309181, 0.0349817276, 0.03496956825, 0.03496623039, 0.04297542572, 0.03200554848, 0.03296232224, 0.03700256348, 0.03296637535, 0.03199267387, 0.03495168686, 0.03296113014, 0.0339653492, 0.03396773338, 0.04295682907, 0.03298091888, 0.03396201134, 0.03394603729, 0.03399896622, 0.03401470184, 0.03497982025, 0.0329682827, 0.03398132324, 0.03697824478, 0.03496456146, 0.032964468, 0.03499603271, 0.03398656845, 0.03500056267, 0.03497743607, 0.03496861458, 0.03198051453, 0.03301119804, 0.03498029709, 0.0329811573, 0.03496718407, 0.03498005867, 0.03297972679, 0.03398108482, 0.03398156166, 0.03398990631, 0.03296685219, 0.0310087204, 0.03398942947, 0.0319647789, 0.03597855568, 0.03496909142, 0.03296422958, 0.03497958183, 0.0349984169, 0.03496170044, 0.03397202492, 0.03300476074, 0.03299379349, 0.03299474716, 0.03499293327, 0.03394889832, 0.03499150276, 0.03497171402, 0.03794336319, 0.0339756012, 0.03396725655, 0.03196263313, 0.03396320343, 0.03501653671, 0.03497958183, 0.03299164772, 0.03298211098, 0.03599739075, 0.03400588036, 0.03201532364, 0.03499317169, 0.03597450256, 0.03496170044, 0.03801369667, 0.0339820385, 0.03498077393, 0.03398084641, 0.03498029709]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-insertion_sort4)(正数代表你是个弟弟)是:0.03445067883
前者(bidirectional_bubble_sort3)平均运行时间0.06767181158,后者(insertion_sort4)平均运行时间0.03322113276,前者约是后者的2.0370倍

  与选择排序相比:比选择排序慢,是选择的2倍左右

详细数据:[0.02798295021, 0.03098106384, 0.02998280525, 0.02996516228, 0.03795814514, 0.03196191788, 0.03199958801, 0.03201460838, 0.0299642086, 0.03096485138, 0.03197264671, 0.03399443626, 0.031999
82643, 0.03397583961, 0.03199720383, 0.03199839592, 0.03298139572, 0.03300595284, 0.0359787941, 0.02999973297, 0.03299283981, 0.03298425674, 0.03295087814, 0.03094530106, 0.02994942665, 0.0329785347, 0.03194737434, 0.03298020363, 0.03097820282, 0.02999544144, 0.03301692009, 0.03300237656, 0.03396272659, 0.03398346901, 0.03198122978, 0.03298258781, 0.03200244904, 0.0319814682, 0.03098106384, 0.0300142765, 0.03398036957, 0.03401565552, 0.03099370003, 0.03095555305, 0.03199458122, 0.03099370003, 0.03498530388, 0.03397893906, 0.0319750309, 0.03297185898, 0.03401732445, 0.03198838234, 0.02898311615, 0.08495044708, 0.03097605705, 0.03498649597, 0.03095364571, 0.03195500374, 0.02899241447, 0.03494858742, 0.03295993805, 0.03196334839, 0.03396272659, 0.03295135498, 0.03197288513, 0.03097701073, 0.03300070763, 0.03199863434, 0.03398823738, 0.03297519684, 0.03296017647, 0.03296780586, 0.03399276733, 0.03398513794, 0.03099942207, 0.03196954727, 0.03098726273, 0.03196763992, 0.03496670723, 0.03401255608, 0.03197717667, 0.03097891808, 0.0310177803, 0.03499245644, 0.03198575974, 0.03298282623, 0.03697443008, 0.03396677971, 0.03198218346, 0.0319955349, 0.03196620941, 0.03297662735, 0.03196763992, 0.03096342087, 0.03297567368, 0.03198027611, 0.03296375275, 0.03198623657, 0.0329709053, 0.03398156166]
运行了100次,平均运行时间差(bidirectional_bubble_sort3-select_sort2)(正数代表你是个弟弟)是:0.03293031931
前者(bidirectional_bubble_sort3)平均运行时间0.06903054476,后者(select_sort2)平均运行时间0.03610022545,前者约是后者的1.9122倍

  

  

python 排序冒泡排序与双向冒泡排序的更多相关文章

  1. PHP实现冒泡排序、双向冒泡排序算法

    冒泡排序(Bubble Sort),是一种较简单的.稳定的排序算法.冒泡排序算法步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置:对每对相邻的元素执行同样的操作,这样一趟下来,最后的元 ...

  2. python排序算法之一:冒泡排序(及其优化)

    相信冒泡排序已经被大家所熟知,今天看了一篇文章,大致是说在面试时end在了冒泡排序上,主要原因是不能给出冒泡排序的优化. 所以,今天就写一下python的冒泡排序算法,以及给出一个相应的优化.OK,前 ...

  3. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  4. Python排序算法之冒泡排序

    冒泡排序 顾名思义,冒泡排序直观的意思是气泡越大冒的越快:),对应到我们的列表中就是数字最大的先选出来,然后依次进行.例如 myList = [1,4,5,0,6],比较方式为: 相邻的两个数字先进行 ...

  5. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  6. Problem D: 双向冒泡排序

    Problem D: 双向冒泡排序 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 447  Solved: 197[Submit][Status][We ...

  7. java数组中的三种排序方法中的冒泡排序方法

    我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...

  8. 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

    又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...

  9. python 排序算法

    冒泡排序: 一. 冒泡排序的定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进 ...

随机推荐

  1. Anslble 部署安装

    安装文档:https://ansible-tran.readthedocs.io/en/latest/docs/intro_configuration.html https://docs.ansibl ...

  2. 01-人脸识别-基于MTCNN,框选人脸区域-detect_face_main

    (本系列随笔持续更新) 搭建要求 详细的搭建过程在 参考资料1 中已经有啦. TensorFlow 1.6.0 OpenCV 2.4.8 仅仅是加载和读取图片的需要 Ubuntu 14.04 64bi ...

  3. 接口规范、容错处理规则、aph备份数据规则

    前话:前后解耦,前端开发环节使用APH,后台开发环节postman(可考虑为后台也做一个aph后台版) 1.api标准:标识符(ret:1为正常数据,0为接口报错),数据体(data:api的数据容器 ...

  4. <Array> 274 275

    274. H-Index 这道题让我们求H指数,这个质数是用来衡量研究人员的学术水平的质数,定义为一个人的学术文章有n篇分别被引用了n次,那么H指数就是n. 用桶排序,按引用数从后往前计算论文数量,当 ...

  5. [LeetCode] 148. Sort List 链表排序

    Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4->2-> ...

  6. 配置中心Apollo实战

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景. 服 ...

  7. uniApp上传图片

    项目中用到了上传图片的功能,记录一下.增强记忆. 要上传图片首先就要先选择图片,或者是先拍照,此时先调用的是 chooseImage 接口,此接口可选择拍照也可以从相册中选择. 它有几个参数,具体可以 ...

  8. 吉特仓储管理系统-ERP或WMS系统中常见术语

    MPS---主生产计划(Master Production schedules) MTO---订货生产(Make-to-Order) BOM---物料清单或产品结构表(Bill of material ...

  9. Visual Studio 调试系列5 检查变量(使用自动窗口和局部变量窗口)

    系列目录     [已更新最新开发文章,点击查看详细] 在调试时,“自动变量”和“局部变量”窗口会显示变量值. 仅在调试会话期间,这两个窗口才可用. “自动变量”窗口显示当前断点周围使用的变量. “局 ...

  10. openldap 指定普通用户登录ldap后可查看某分组下的用户信息

    #ldap普通用户登录限制查看信息#在/openldap/slapd.conf文件最下面添加一下代码,可控制某个用户拥有查看用户信息的权限,而其他普通用户登录后无法查看用户信息,若有多个普通用户需要用 ...