美文网首页排序算法
冒泡排序(swift、oc双语实现)

冒泡排序(swift、oc双语实现)

作者: 阿凡提说AI | 来源:发表于2017-12-25 15:06 被阅读25次

冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序


1024555-20161126001352300-2027386210.png

代码实现

在冒泡排序的过程中,如果某一趟执行完毕,没有做任何一次交换操作,比如数组[5,4,1,2,3],执行了两次冒泡,也就是两次外循环之后,分别将5和4调整到最终位置[1,2,3,4,5]。此时,再执行第三次循环后,一次交换都没有做,这就说明剩下的序列已经是有序的,排序操作也就可以完成了,来看下代码

oc:

// 冒泡排序
- (void)bubbleSort:(NSMutableArray *)arr{
    for (int i = 0; i < arr.count - 1; i++) {
        BOOL flag = true;//设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成。
        for (int j = 0; j < arr.count - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                [self swap:arr from:j to:j+1];
                flag = false;
            }
        }
        if (flag) {
            break;
        }
    }
}

swift:

func bubbleSort(arr:inout Array<Int>){
        for i in 0..<(arr.count - 1) {
            var flag:Bool = true//设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成。
            for j in 0..<(arr.count - 1 - i) {
                if (arr[j] > arr[j + 1]) {
                    self.swap(arr: &arr, a: j, b: j+1)
                    flag = false
                }
            }
            if (flag) {
                break;
            }
        }
    }

根据上面这种冒泡实现,若原数组本身就是有序的(这是最好情况),仅需n-1次比较就可完成;若是倒序,比较次数为 n-1+n-2+...+1=n(n-1)/2,交换次数和比较次数等值。所以,其时间复杂度依然为O(n2)。综合来看,冒泡排序性能还还是稍差于上面那种选择排序的。

相关文章

  • 冒泡排序(swift、oc双语实现)

    冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,...

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

  • 希尔排序(swift、oc双语实现)

    希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排...

  • 堆排序(swift、oc双语实现)

    预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复...

  • OC 中实现常用的算法

    #在OC中实现常用的算法(冒泡,选择,快速,插入) ## 1.冒泡排序 - (void)viewDidLoad {...

  • 算法

    冒泡排序、选择排序 swift 写法 OC 写法 斐波那契算法【后一项等于前两项之和】

  • Objective-C实现常用的4种排序算法

    OC实现的4种排序又来了! 4种排序分别是:快速排序、冒泡排序、选择排序、插入排序,其他的我就不写了,因为OC里的...

  • iOS排序方法集合

    OC_选择排序 OC_冒泡排序 参考原文:排序算法

  • 排序算法

    冒泡排序 PHP OC 快速排序

网友评论

    本文标题:冒泡排序(swift、oc双语实现)

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