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

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

作者: 奔跑的时间 | 来源:发表于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、稳定性:冒泡排序在排序过程中,元素两两交换时,相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

    相关文章

      网友评论

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

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