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

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


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的平方),谢谢支持。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,224评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • 狗子是我多年的好友,我视为家人的朋友 可以说是一把鼻涕一把泪的一起拉扯这么大,容易吗我🤧🤧🤧,天天灌屎灌尿,才有现...
    Janus_Zhan阅读 270评论 0 0
  • 2017/2/26 星期日 晴 今天在家里听了爱平老师的个案,心想生老师的越花越有钱,大海豚的彻...
    富足快乐的筱莹222阅读 266评论 0 3