Python实现冒泡排序,python编写函数实现冒泡排序

  Python实现冒泡排序,python编写函数实现冒泡排序

  BubbleSort是一种简单的排序算法。本文将详细告诉你Python实现冒泡排序算法的方法,有兴趣的朋友可以跟边肖学习一下。

  00-1010 1.算法描述2。算法分析3。动画显示4。代码实现5。算法升级6。时间复杂度分析。

  

目录

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

  

1. 算法描述

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

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

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

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

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

  

2. 算法分析

  了解了操作流程之后,我们来看看动画实现:

  

3. 动图展示

  我们对下面的无序列表进行排序

  实施代码:

  导入时间

  pop_list=[19,14,10,4,15,26,20,96]

  打印(排序前的列表为:,pop_list)

  #记录开始时间

  start=time.time()

  #外部循环控制轮的数量

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

  #内循环控制比较次数

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

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

  if pop_list[j] pop_list[j 1]:

  # python交换位置的独特方式

  弹出列表[j],弹出列表[j 1]=弹出列表[j 1],弹出列表[j]

  打印(排序列表为:,pop_list)

  #记录结束时间

  end=time.time()

  打印(总算法时间:,结束-开始)

  运行结果:

  

4. 代码实现

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

  实施代码:

  导入时间

  定义冒泡排序(弹出列表):

  对于范围(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:

  返回

  pop_list=[19,14,10,4,15,26,20,96]

  打印(排序前的列表为:,pop_list)

  #记录开始时间

  start=time.time()

  冒泡排序(弹出列表)

  打印(排序列表为:,pop_list)

  #记录结束时间

  end=time.time()

  打印(总算法时间:,结束-开始)

  运行结果:

  

5. 算法升级

  最优时间复杂度:O(n)(表示遍历一次后没有可交换元素,排序结束。)

  最坏时间复杂度:o(n ^ 2)

  稳定性:稳定性

  排序:数组中有8个数字需要排序。第一轮排序做了7次比较,第二轮排序做了6次比较,以此类推。上一轮做了一个比较。

  当元素总数为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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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