美文网首页
iOS-排序算法

iOS-排序算法

作者: Aaron升 | 来源:发表于2021-04-06 22:56 被阅读0次

传送门

iOS-冒泡排序(Bubble Sort)
iOS-选择排序(Selection sort)
iOS-插入排序(Insertion sort)

常见的排序算法

排序算法 平均时间复杂度 特殊情况 空间复杂度 排序方式 稳定性
冒泡排序 O(n²) 最好:O(n) O(1) In-place 稳定
选择排序 O(n²) - O(1) In-place 不稳定
插入排序 O(n²) 最好:O(n) O(1) In-place 稳定

时间复杂度

算法的时间复杂度(Time Complexity)是指算法需要消耗的时间。一般来说,计算机算法是问题规模n的函数f(n),算法执行时间的增长率与f(n)的增长率正相关,称作渐近时间复杂度,简称时间复杂度

  • 忽略加法常数
    函数:f(n)=2n+1
    当n不断变大的时候:2n+1基本和2n相同,后面的加法常数 基本没有影响。因此忽略加法常数。

  • 忽略相乘常数
    函数:f(n)=2n
    n不断变大的时候,其实就是n的趋势结果。因此问题规模n相乘的常数项也可以忽略,不影响算法比较。

  • 保留最高次项
    函数:f(n)=n²+2n
    其实就是的趋势结果,相比之下2n影响可以忽略不计。因此只保留最高次项。

时间复杂度的优劣对比 常见的数量级大小:越小表示算法的执行时间频度越短,则越优;
复杂度优劣排序,随数据量增大,执行时间增大的幅度越大的,复杂度越高

随着问题规模 n 的不断增大,上述时间复杂度不断增大,算法的执行效率越低

优劣排序:
O(1)<O(log*n)<O(n)<O(n*log*n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)

Big-O Complexity Chart

稳定性分析

如果待排序的序列中存在两个或两个以上具有相同关键词的数据,排序后这些数据的相对次序保持不变,即它们的位置保持不变,通俗地讲,就是两个相同的数的相对顺序不会发生改变,则该算法是稳定的;如果排序后,数据的相对次序有可能会发生变化,则该算法是不稳定的。

  • 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。
  • 不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。

关于选择排序算法为什么不稳定的问题,在《iOS-选择排序(Selection sort)》中有举例子说明。

参考资料

RUNOOB.COM-1.0 十大经典排序算法

·

相关文章

  • iOS-数组排序

    首先提供一些排序文章供大家参考学习常用排序算法总结iOS-八大基本排序Sort 各类算法和时间复杂度分析 关于iO...

  • iOS-排序算法

    传送门 iOS-冒泡排序(Bubble Sort)[https://www.jianshu.com/p/e2eef...

  • iOS-排序算法简介

    1.选择排序 由于选择排序过于简单,看一下代码应该就能懂 2.冒泡排序 3.快速排序 步骤:1 ).设置两个变量i...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 经典排序算法总结

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

  • 前端算法学习-第一篇

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

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

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

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

网友评论

      本文标题:iOS-排序算法

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