用python实现冒泡排序算法,冒泡排序算法python实现

  用python实现冒泡排序算法,冒泡排序算法python实现

  这篇文章给大家带来了一些关于python的知识,主要介绍了一些与冒泡排序相关的问题,包括算法描述、分析、代码实现等等。下面就来看看吧,希望对你有帮助。

  推荐:python视频教程

  00-1010冒泡排序是一个简单的排序算法。它反复遍历要排序的序列,一次比较两个元素,如果它们的顺序不对,就切换它们。重复遍历序列,直到不需要交换,也就是说,序列已经被排序。这种算法的名字来源于较小的元素会通过交换慢慢“浮”到序列的顶端。

  00-1010 1.比较相邻的元素。如果第一个比第二个大(按升序),就把两个都交换。

  2.对每一对相邻的元素做同样的工作,从开始的第一对到结束的最后一对。在这一步之后,最后一个元素将是最大的数字。

  3.对除最后一个元素之外的所有元素重复上述步骤。

  4.每次对越来越少的元素继续重复上述步骤,直到没有任何要比较的数字对。

  然后我们需要进行n-1次冒泡过程,每次对应的比较时间如下图所示:

  

1. 算法描述

看明白了运行流程,我们再来看看动图实现:

  00-1010我们对以下无序列表进行排序

  实施代码:

  Time pop _ list=[19,14,10,4,15,26,20,96] print(排序前的列表为:,pop _ list)# record start time start=time . time()#外循环控制轮数为I in range (len (pop _ list)-1

  #内循环控制比较次数

  对于范围内的j(len(pop _ list)-I-1):

  #如果前一个数字大于最后一个数字,则交换位置

  if pop_list[j] pop_list[j 1]:

  # python交换位置的独特方式

  Pop _ list [j],pop _ list [j 1]=pop _ list [j 1],pop _ list [j] print(排序列表为:,pop_list)#记录结束时间end=time.time()print(总算法时间:,end-start)运行

  00-1010定义循环中的变量计数。如果count在第一次循环后没有变化,这意味着输入是一个有序序列。这时,我们直接返回退出循环。此时时间复杂度为O(n)

  实施代码:

  导入timedef bubble _ sort(pop _ list):

  对于范围(len(pop_list) - 1,0,-1):内的j

  计数=0

  对于(0,j):范围内的I

  if pop_list[i] pop_list[i 1]:

  流行列表[i],流行列表[i 1]=流行列表[i 1],流行列表[i]

  计数=1

  如果计数==0:

  Return _ list=[19,14,10,4,15,26,20,96] print(排序前的列表为:,Pop _ list)# Record start time start=time . time()bubble _ sort(Pop _ list)print(排序后的列表为Pop _ list)# Record end time end=time . time()print(总算法时间:,end-start)运行结果:

  00-1010最优时间复杂度:O(n)(表示如果遍历一次,发现没有可交换元素,排序结束。)最差时间复杂度:O(n ^ 2)稳定性:稳定排序分析:数组中有8个数需要排序。第一轮排序做了7次比较,第二轮排序做了6次比较,以此类推,最后一轮做了1次比较。当元素总数为N时,所需的比较总数为:(N-1) (N-2) (N-3).1=N*(N-1)/2该算法进行大约N ^ 2/2次比较。因为只有在前一个元素大于后一个元素时才交换数据,所以交换的次数小于比较的次数。如果数据是随机的,大约有一半的数据需要交换,那么交换的次数是n ^ 2/4(但是最差的情况下,当初始数据是逆序的时候,每次比较都需要交换)。交换和比较的运算次数与N 2成正比。由于在大O表示中忽略了常数,所以冒泡排序的时间复杂度为O (N 2)。推荐:python视频教程。以上是Python冒泡排序算法的详细内容。更多信息请关注热门IT软件开发工作室其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: