首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解冒泡排序算法

基本思想 冒泡排序的基本思想是: 通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。...水底冒泡图片 例子 给定一个数组如下: [ 5 , 8 , -2 , 20 -6 ] 定义两个变量 i 和 j,初始状态 i 存第一个元素的索引,j存i代表元素的下一个元素的索引...; 所以冒泡排序的时间复杂度是 ? 。 稳定性 冒泡排序就是把逆序的元素进行交换,每次都是相邻的两个元素比较,交换也发生在这两个元素之间。...所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。...总结 冒泡排序的思想是通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。 优化方法是,若一趟排序中没有发生交换则退出循环,已经有序。 冒泡排序的时间复杂度是 ?

54920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    冒泡排序python实现_冒泡排序python代码优化

    一、什么是冒泡排序 冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。...第四轮排序,此时待排序序列包含前 2 个元素,对其进行冒泡排序的整个过程如图 4 所示。...三、冒泡排序的实现代码(python) def mao_pao(num_list): num_len = len(num_list) # 控制循环的次数 for j in range(num_len):...: 冒泡排序过程包含两个操作,比较和交换,因为冒泡排序只会交换相邻的两个元素,所以,每进行一次交换,有序度就增加一。...所以,冒泡排序的执行过程中,总的交换次数是确定的,即为逆序度。

    64030

    Java实现冒泡排序(详解

    Java实现冒泡排序(详解) 话不多说,直接开始! 冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲~ 冒泡排序原理 比较相邻的两个元素。...这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。 重复上一步,继续从列表开头依次对相邻元素进行比较。...已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。 继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。...冒泡排序过程 以该一维数组为例: int[] array = new int[]{ 55,33,22,66,11}; 第一轮冒泡 图①为第一轮”冒泡”中数据的起始顺序柱形图,只要满足条件:“前一个元素比后一个元素大...=11,条件满足,交换元素的位置顺序,如图⑦所示; 第三轮”冒泡”演示如图所示: 第四轮冒泡 图⑦为第四轮”冒泡”中数据的起始顺序柱形图; array[0]=22 > array[1]=11,条件满足

    81121

    Java语言冒泡排序详解

    我将从排序算法说起,下面从冒泡排序开始说起。 排序结果:数据从小到大。 首先说一下冒泡排序的思想:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右数据。继续比较。...我以5个数据为例集合冒泡排序的思想进行图解说明。 数据为 8、5 、2 、6 、1。 第一次比较过程如下: 简单说明: 每次比较从第一个数据开始,也就是8开始。...[10]; // 初始化数组 initData(data); // 打印排序前数组数据 print(data); // 冒泡排序...//从图解中可以看出,随着比较次数的增多,冒泡的过程逐渐减少,因此i的值是随着比较的次数增多而减少。...} else { System.out.println(data[i] + "]"); } } } 下一篇:选择排序详解

    33810

    Python|图述冒泡

    引言 在“小鲤鱼历险记”中,小鲤鱼的绝活是吐泡泡,惹得好多人捧腹大笑,其实在数据算法的世界里,也有一个有趣的现象叫冒泡排序。...解决方案 冒泡排序就是交换排序的一种排序方法 百度百科上面冒泡排序的定义,是一种计算机科学领域的较简单的排序算法。...首先冒泡排序其实不是很难,相对于直接排序,冒泡排序的算法程度是比较简单的,因为直接排序一个一个比较大小,这样就会导致算法的时间复杂度就会很大。所以我推荐用冒泡排序。...,所以就进行交换,这就像水的泡泡,而小的数就像水里的泡泡一个一个浮上来,而相对大的数就慢慢沉下去了,所以冒泡排序还是比较有趣的。...结语 以上就是冒泡排序的简单介绍,可能过程不是很详细,但是应该能够初步理解,有些数组用冒泡排序还是要进行很多趟的排序才能够得到结果,但是冒泡排序是一种常用的排序方法。

    43220

    Python实现冒泡排序

    一、冒泡排序简介 冒泡排序(Bubble Sort)是一种常见的排序算法,相对来说比较简单。...在冒泡排序中,值最大(或最小)的元素会通过交换慢慢“浮”到元素列表的“顶端”。就像“冒泡”一样,所以被称为冒泡排序。 二、冒泡排序原理 冒泡排序的原理如下: 1. 比较相邻的两个元素。...一直“走访”到结尾,第一轮“冒泡”结束后,值最大的元素“冒泡”到了列表的结尾。50“冒泡”到了列表结尾。 ? 在下一轮“冒泡”中,不需要再将50进行比较,需要比较的元素个数减1。 6....三、Python实现冒泡排序 # coding=utf-8 def bubble_sort(array): for i in range(1, len(array)): for...在冒泡排序中,最坏的情况是元素列表的初始状态是完全逆序排列的,需要进行 n-1 轮“冒泡”,每一轮“冒泡”需要进行 n-i 次比较和交换操作。

    92930

    Python实现冒泡排序

    Python实现冒泡排序 一、冒泡排序简介 冒泡排序(Bubble Sort)是一种常见的排序算法,相对来说比较简单。...在冒泡排序中,值最大(或最小)的元素会通过交换慢慢“浮”到元素列表的“顶端”。就像“冒泡”一样,所以被称为冒泡排序。 二、冒泡排序原理 冒泡排序的原理如下: 1. 比较相邻的两个元素。...一直“走访”到结尾,第一轮“冒泡”结束后,值最大的元素“冒泡”到了列表的结尾。50“冒泡”到了列表结尾。 在下一轮“冒泡”中,不需要再将50进行比较,需要比较的元素个数减1。 6....三、Python实现冒泡排序 # coding=utf-8 def bubble_sort(array): for i in range(1, len(array)): for...在冒泡排序中,最坏的情况是元素列表的初始状态是完全逆序排列的,需要进行 n-1 轮“冒泡”,每一轮“冒泡”需要进行 n-i 次比较和交换操作。

    1.2K10

    Python算法——冒泡排序

    冒泡排序是一种基本的比较排序算法,尽管不是最高效的排序算法,但它有助于理解排序算法的基本原理。本文将详细介绍冒泡排序的工作原理和Python实现。...冒泡排序的工作原理 冒泡排序的基本思想是通过多次遍历数组,依次比较相邻的两个元素,并根据比较结果交换它们的位置。每一轮遍历都会将一个最大(或最小)的元素"冒泡"到数组的末尾,因此称为"冒泡排序"。...下面是一个示例,演示冒泡排序的过程。...Python实现冒泡排序 下面是Python中的冒泡排序实现: def bubble_sort(arr): n = len(arr) for i in range(n):...示例代码 下面是一个使用Python进行冒泡排序的示例代码: def bubble_sort(arr): n = len(arr) for i in range(n):

    1.9K10

    经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序和希尔排序

    经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序和希尔排序 内容目录 一、冒泡排序(Bubble Sort)二、冒泡排序法改进三、双向冒泡排序法四、插入排序五、希尔排序(插入排序改进...) 一、冒泡排序(Bubble Sort) 冒泡排序是一种计算机科学领域的较简单的排序算法。...冒泡排序也是一个嵌套的循环,如果列表是已经排好序的,冒泡排序不会执行任何的交换,在最坏的情况下,为平方阶复杂度。...下面给两种python实现代码: 代码一 def BubbleSort(x): i = len(x) - 1 while i > 0: j = 0 while j...,针对这一问题,可以采用双向冒泡排序法,也称鸡尾酒排序法对传统的冒泡排序法进行改进。

    1.5K30

    Python 3 冒泡排序】

    算法讲解 冒泡排序是一种简单直观的排序算法(算法简单,效率低)。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。...算法代码实现 Python 3 代码实现如下,随机生成20个数,保存到列表变量list1中,通过冒泡排序法进行排序,然后输出排序结果: from random import randrange import...范围内随机取20个数值 list1.append(randrange(0, 1000, 3)) print('排序前数组:',list1,'\n') # 通过两个for循环实现冒泡排序算法...list1[j + 1]: # 遇到较小值前后交换 list1[j], list1[j + 1] = list1[j + 1], list1[j] print('冒泡排序结果...list1[j]) start = datetime.datetime.now() #调用排序函数 Bubble_sort() end = datetime.datetime.now() print ('冒泡排序运行所用时间

    52120
    领券