美文网首页
说说算法那些事-冒泡排序

说说算法那些事-冒泡排序

作者: 奔跑的时间 | 来源:发表于2017-11-02 18:04 被阅读0次

冒泡排序是通过数据比较大小交换位置的排序。阅读代码更有助于理解。查看完整代码

一.算法思想:

          1、冒泡排序的基本思想就是:从第一个元素开始,进行两两比较,大(小)元素交换元素位置, 直到最后将最大(小)的数据元素交换到最后,从而成为有序序列的一部分.然后一直循环,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出里面最大(小)的数据元素放到队尾。                                                                                                                                          

        2、算法过程步骤: 1)、比较相邻的两个元素,如果第一个大于(小于)第二个,就交换这个两个元素。2)、一直循环比较,直到最后一个元素,第一轮比较完成后,最大(最小)的元素会被放在最后。3)、重复上述操作,直到已排好的元素。

      3、算法实例:

算法实例

二.核心代码:

+ (void)bubbleWithArray:(NSMutableArray *)originArr

{

int i,j;

for (i = 0; i < originArr.count; i++) {

      for (j = 0; j < originArr.count - i -1; j++) {

         if (originArr[j] > originArr[j + 1]) {

               id temp = originArr[j];

               originArr[j] = originArr[j+1];

              originArr[j+1] = temp;

                   }

          }

}

三.算法时间、空间复杂度、稳定性

1、算法时间:

     1)、如果元素都是正序排序的,总比较次数为n-1,移动次数为0,最好时间复杂度为O(n).

    2)、如果元素逆序排序时,冒泡排序总的比较次数为n(n-1)/2,移动次数为3n(n-1)/2次,在最坏情况下的时间复杂度为O(n^2),所以平均时间复杂度为O(n^2);

2、空间复杂度:冒泡排序排序过程中需要一个临时变量进行两两交换,所需要的额外空间为1,因此空间复杂度为O(1)。

3、稳定性:冒泡排序在排序过程中,元素两两交换时,相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

相关文章

  • 说说算法那些事-冒泡排序

    冒泡排序是通过数据比较大小交换位置的排序。阅读代码更有助于理解。查看完整代码 一.算法思想: 1、冒泡排...

  • 算法-冒泡排序

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

  • 经典排序算法总结

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

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

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

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • Java基础(冒泡排序与选择排序)

    冒泡排序 冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一...

  • 基本算法——快速排序算法

    快速排序算法是对冒泡算法的改进。所以我们首先来简单的谈谈冒泡算法。 1.冒泡算法 冒泡排序(Bubble S...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

网友评论

      本文标题:说说算法那些事-冒泡排序

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