美文网首页排序算法
直接插入排序(swift、oc双语实现)

直接插入排序(swift、oc双语实现)

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

直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。


1024555-20161126000335346-416319390.png

代码实现
oc:

// 直接插入排序
- (void)insertionSort:(NSMutableArray *)arr{
    for (int i = 1; i < arr.count; i++) {
        int j = i;
        while (j > 0 && arr[j] < arr[j - 1]) {
            [self swap:arr from:j to:j-1];
            j--;
        }
    }
}

swift:

// 直接插入排序
    func insertionSort(arr:inout Array<Int>){
        for i in 1..<arr.count  {
            var j = i;
            while j>0&&arr[j] < arr[j - 1] {
                self.swap(arr: &arr, a: j, b: j-1)
                j = j - 1;
            }
        }
    }

简单插入排序在最好情况下,需要比较n-1次,无需交换元素,时间复杂度为O(n);在最坏情况下,时间复杂度依然为O(n2)。但是在数组元素随机排列的情况下,插入排序还是要优于上面两种排序的。

总结

上面三篇文章列举了排序算法中最基本的三种算法(简单选择,冒泡,插入),这三种排序算法的时间复杂度均为O(n的平方),后续会陆续更新其他更高阶一些的排序算法,时间复杂度也会逐步突破O(n的平方),谢谢支持。

相关文章

  • 直接插入排序(swift、oc双语实现)

    直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 代码实...

  • Swift与OC的区别

    OC Swift oc swift 如果有参数直接增加 ':'

  • OC引入Swift,混编

    一、OC中引入Swift 最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中...

  • iOS设计模式-单例

    直接上代码,后面详解 OC实现 swift实现 详解 注:如果不实现copy,mutableCopy方法,在掉用的...

  • OC转Swift

    记录下OC转Swift的一些经历 文件区别 OC:.h声明 .m实现 Swift:.swift 声明+实现 参数...

  • swift 调用 OC中的block

    OC中声明block; OC中实现block swift中实现

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

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

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

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

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

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

  • Swift和OC混合开发

    在swift项目上的Swift和OC混合开发 1、Swift调OC方法: (1)、直接新建OC项目会自动创建桥梁文...

网友评论

    本文标题:直接插入排序(swift、oc双语实现)

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