美文网首页工作生活
数据结构算法之冒泡排序

数据结构算法之冒泡排序

作者: 第三个人格 | 来源:发表于2019-07-01 15:01 被阅读0次

冒泡排序的思想比较简单:相邻的数据进行两两比较,小数放在前面,大数放在后面,这样一趟下来,最大的数就被排在了最后一位,第二趟也是如此,如此类推,直到所有的数据排序完成。

我们在开始接触的时候,只知道排序是把int数组按照从小到大或者从大到小排序,如果排序的是对象呢?所以我们要明确排序是按照什么来排序。排序指的是将一个数据元素的任意序列,重新排列成一个按照关键字有序的序列。

算法思路:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

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

假如有n个元素需要从小到大排序,当第二步做完,最大的元素会在最后面,所以每比较完一轮可以把最后一个元素的位置排除即n-1。接下来只需要对其余n-1个数据进行两两比较,依然从头开始比较,第二轮下来第二大的数据就尾部倒数第二的位置了,重复上述过程直到数据有序为止。写法如下:

冒泡排序

我之所以在里面加了一个tag,是因为排序的时候,可能在某一轮数组已经是有序的了,以后的比较就没有意义,所以当tag为true时,说明后面已经没有交换的元素的了。假如有n个元素那就需要比较n-1次,如果在第一轮比较就已经完成,则后面的n-1-1次的比较将毫无意义,如图:

图2:没有加tag

图2中没有加tag,导致后面的几次排序都无效。

适用场景:

经过上述过程我们了解到冒泡排序的过程存在大量的比较,即使经过上面一个小小的优化,如果数据量特别大并且大部分无序的,同样需要大量的两两比较,时间复杂度最好最坏均为O(n2),所以冒泡排序适用于数据量非常小的排序。

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 基础排序算法

    一 冒泡排序(buddle sort) 众所周知,冒泡排序一般是我们接触数据结构与算法里面的第一种排序算法。其经典...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 算法理解之排序-冒泡排序

    算法理解之排序-冒泡排序 冒泡排序是一种简单的排序算法, 算法依次走访未排序的元素, 然后将相邻元素依次两两比较,...

  • 常见排序算法之冒泡排序

    常见排序算法之冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,...

  • 排序系列之四: 冒泡排序法

    Hello,大家好。今天继续给大家讲解排序系列之☞《冒泡排序算法》 冒泡排序(Bubble Sort)...

网友评论

    本文标题:数据结构算法之冒泡排序

    本文链接:https://www.haomeiwen.com/subject/qitgcctx.html