**

各种排序算法复习

借鉴转载自十大经典排序算法
**
十大算法复杂度:

  1. 冒泡排序


思想:
两两比较,A[i+1]>A[i] 交换位置。
代码实现:

class Solution {public static void main(String[] args) {int[] array = new int[]{2,2,3,1};for(int i=0;i<array.length-1;i++){for(int j=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){int tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}
}

时间复杂度:
数组长度为n,两层循环
第一次比较n-1次
第二次比较n-2次
第三次比较n-3次…
最好情况,只比较不用交换,开始即有序:
O(n) = 1+2+…+n-1 = n(n-1)/2
最坏情况,每次比较都要交换,开始即逆序:每次交换需要3步,n-1次交换3(n-1):
O(n) = 1x3+2x3+…+(n-1)x3 = 3n(n-1)/2
最优情况,设置一标志位,如果元素已经排序好,那么循环一次就直接退出
O(n) = n
代码优化:设置是否有序标志flag。


```java//flag为1,默认有序int flag=1;int[] array = new int[]{2,2,3,1};for (int i=0;i<array.length-1;i++){for (int j=0;j<array.length-1-i;j++){if (array[i]>array[j]){int tmp = array[j];array[j] = array[i];array[i] = tmp;//flag为0,无序flag=0;}}//flag仍旧为1,整个序列有序,直接退出。if (flag==1){break;}}

``
空间复杂度:
只用到一个临时变量,空间复杂度O(n) = O(1)

冒泡排序时间 / 空间复杂度相关推荐

  1. 001+limou+时间空间复杂度

    0.数据结构的学习推荐书籍 (1)<小黑的漫画算法>简单看一下 (2)<大话数据结构> (3)<数据结构(C语言版)> 1.时间复杂度和空间复杂度 (1)时间复杂度 ...

  2. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

  3. 排序算法 之四 分类、时间/空间复杂度、如何选择

    写在前面   现在网上关于排序算法的文档不计其数,为什么要写这篇文章呢?主要是因为一些算法虽然在平时有用到,但是从来没有细细整理过,没有个统一.整体的认识.写这篇文章一来是进行一下总结,二来趁机再系统 ...

  4. Algorithm Master Road:算法的时间/空间复杂度

    很多同学都觉得算法很难,难以入门,难以理解,更难以掌握和运用,其实归根溯源,我们可以把所有的问题都通过枚举法来解决,但是受困于「时间」和「空间」的因素,有的时候并不能枚举所有的情况,所以需要通过精妙的 ...

  5. (二) 时间/空间复杂度计算

    时间/空间复杂度计算 时间复杂度是什么? O(1) O(n) O(1)+O(n)=O(n) O(n)*O(n)=O(n^2) O(logN) 空间复杂度是什么? O(1) O(n) O(n^2) 思考 ...

  6. 数据结构与算法的时间空间复杂度

    提到数据结构与算法就不得不提时间复杂度和空间复杂度,本人看大部分文章介绍都比较晦涩难懂,就想着用简单的代码示例快速让你理解数据结构与算法的时间空间复杂度. 首先,时间复杂度表示的是使用某个数据结构或者 ...

  7. 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序

    简单排序算法时间空间复杂度分析及应用(4)-二分插入排序 背景: 顾名思义,这个二分插入排序是直接插入排序的进化版,主要变化的地方就是在内循环部分,即外循环的循环节点在确定区域的位置查询方式由原来的直 ...

  8. 二叉树中序遍历习题引发的时间空间复杂度思考:内存角度

    今天做了一道简单的二叉树遍历. 首先我们需要了解什么是二叉树的中序遍历:按照访问左子树--根节点--右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树.因此 ...

  9. 选择排序,插入,快排,冒泡排序的时间空间复杂度详解

    时间复杂度 在算法的分析中,语句的执行次数T(n)是一个关于n(问题规模)的一个函数.分析n的变化引起T(n)的改变,进而得到T(n)的数量级,也就是时间频率.如果存在某一个辅助函数f(n),当n趋于 ...

最新文章

  1. Mapreduce 任务提交源码分析1
  2. 华为轮值董事长郭平:打造VR/AR信息高速公路,支撑产业繁荣
  3. 探索Android中的Parcel机制(上)
  4. 编译linux内核时出错
  5. Qt工作笔记-右键菜单造成内存泄漏等分析
  6. BZOJ 1070: [SCOI2007]修车(最小费用最大流)
  7. 互联网广告获客渠道有哪些?
  8. 基于matlab的64QAM通信系统的仿真
  9. REVIT插件 | 建模助手这次的版本更新,BIMer都笑了
  10. 最新卡巴斯基互联网安全套装7.0(kis7)系列激活码
  11. 用vue+vant框架写手机端
  12. flink 部署模式和运行时架构(会话模式、单作业模式、应用模式,JobManager、TaskManager,YARN 模式部署以及运行时架构)
  13. UI设计行业领域知识体系
  14. php动态创建变量名,PHP中动态创建变量名(可变变量)
  15. 名帖332 王献之 草书《鸭头丸帖》
  16. java实现销售预测算法,预测5天销售
  17. Tensorflow Python API 翻译(array_ops)
  18. 【EdgeX】基于sdk-c随机数设备服务发布数据到MQTT消息总线上,并在MQTTX上订阅
  19. 卖家必看-跨境电商亚马逊、Lazada、shopee、速卖通、eBay、wish、Tik Tok、mercari、newegg测评(补单),深度解析高利润爆单打法
  20. C语言的输入输出模型

热门文章

  1. 成考计算机是在笔试吗,成人高考考试怎么答题方式(成人高考是笔试还是电脑答题)...
  2. ABBYY FineReader PDF 16安装教程使用指南及ABBYY16系统配置要求
  3. c++容器使用50条总结
  4. 常见的距离计算公式—— 切比雪夫距离 ( Chebyshev Distance )
  5. 拎清黑盒白盒,告别混乱失控的生活
  6. 锁-ReentrantLock
  7. 用Google Assistant 的Trivia模板创建一款益智问答游戏
  8. 毕业=失业,做了半年“啃老族”后,我实现了财务自由
  9. 如何做到年薪 50 万的程序员?
  10. 配置nginx访问minio