1.冒泡排序

排序原理:对一组数据,比较相邻数据的大小,把小的数据放在前面,值大的放在后面(默认升序排序)

每轮比较结果:

第一轮 冒泡 为8

3 4 5 2 6 8 1   3 4 5 2 6 8 1   3 4 2 5 6 8 1   3 4 2 5 6 8 1   3 4 2 5 6 8 1   3 4 2 5 6 1 8

第二轮 冒泡 为6

3 4 2 5 6 1 8   3 2 4 5 6 1 8   3 2 4 5 6 1 8   3 2 4 5 6 1 8   3 2 4 5 1 6 8

第三轮 冒泡 为5

2 3 4 5 1 6 8   2 3 4 5 1 6 8   2 3 4 5 1 6 8   2 3 4 1 5 6 8

第四轮 冒泡 为4

2 3 4 1 5 6 8   2 3 4 1 5 6 8   2 3 1 4 5 6 8

第五轮 冒泡 为3

2 1 3 4 5 6 8   2 1 3 4 5 6 8

第六轮 冒泡 为2 排序完成

1 2 3 4 5 6 8

2.选择排序

原理:在一组数据中,选出最小数与第一个位置的数交换。然后在剩下的数中再找最小的数与第二个位置的数交换,如此类推。

每次循环的结果都是每轮比较结果的比较值和每轮比较最小值的互换:

1352684   1253684  1235684 1234685  1234586 1234568

3.插入排序

原理:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序

每轮最终比较结果:

3 4 5 2 6 8 1

3 4 5 2 6 8 1

2 3 4 5 6 8 1

2 3 4 5 6 8 1

2 3 4 5 6 8 1

1 2 3 4 5 6 8

4.快速排序

原理:从数组第一个元素开始依次确定从小到大的元素,通过设置一个初始中间值,来将需要排序的数组分成3部分,小于中间值的左边,中间值,大于中间值的右边,继续递归用相同的方式来排序左边和右边,最后合并数组

php算法,记录PHP常见的几种算法相关推荐

  1. 95% 的算法都是基于这 6 种算法思想

    95% 的算法都是基于这 6 种算法思想 算法思想是解决问题的核心,万丈高楼起于平地,在算法中也是如此,95% 的算法都是基于这 6 种算法思想,结下了介绍一下这 6 种算法思想,帮助你理解及解决各种 ...

  2. 软考-算法设计概述及常见的几种算法形式

    递归法 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题转化为一 个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复 ...

  3. 95% 的算法都是基于这 6 种算法思想,大厂Java面试必考点

    // 当前结点的 id 符合查找条件,返回当前结点 if(node.id === id) return node // 前结点的 id 不符合查找条件,继续查找它的每一个子结点 for(var i = ...

  4. 数据结构和算法-14.程序员常用10种算法

    1. 二分查找算法(非递归) 1.1 介绍 二分查找算法只适用于从有序的数列种进行查找,将数列排序后再进行查找 二分查找法的运行时间为对数时间O(log2 n),即查找到需要的目标位置最多只需要log ...

  5. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

  6. 遗传算法是一种进化算法_我是如何设计一种算法的,该算法混合了到您镇上的乐队的播放列表...

    遗传算法是一种进化算法 by Sina Habibian 通过新浪Habibian 我是如何设计一种算法的,该算法混合了到您镇上的乐队的播放列表 (How I designed an algorith ...

  7. python有几种_Python常见的几种算法

    冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也 ...

  8. 监督学习最常见的四种算法

    在机器学习中,无监督学习(Unsupervised learning)就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类:而监督型学习(Supervised learning) ...

  9. 算法题目中常见的几种输入小点-gets,cin,scanf,getline,sstream

    cin,scanf遇到空格都会停下来. gets可读入空格 例如: 在这里由于要读入空格,我们用gets来读入. const int N = 8; char g[N][N];while(gets(g[ ...

最新文章

  1. Android10.0 四大组件与进程启动间关系
  2. Windows2012中安装域控(DC) + SQL Server 2014 + TFS 2015
  3. 视频目标跟踪算法综述
  4. CCD和CMOS摄像头成像原理以及其他区别
  5. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
  6. 使用 function 构造函数创建组件和使用 class 关键字创建组件
  7. Spark入门(Python)
  8. 错过了秋天的第一杯奶茶,不要错过秋天第一场黑客松
  9. quatus_sh tcl获取帮助
  10. 事情又没有后续,吾真想质问头目,汝是为吾干活吗?
  11. macbook解决软件无法安装的问题
  12. vue项目中使用 ttf字体
  13. windows批处理脚本bat命令解析【12】ECHO处于关闭状态
  14. Java学习—画图程序项目(2)
  15. VMware软件安装与完全卸载
  16. 分布式计算、云计算与大数据
  17. 【深度学习Deep Learning】资料大全
  18. Python之简单飞机行李托运计费系统
  19. 反论文抄袭检查,吼吼,终于找到了
  20. docker下Gitlab如何进行备份恢复与迁移?

热门文章

  1. Java 消息队列、缓存、同步(个人理解:空谈)
  2. 使用redis所维护的代理池抓取微信文章
  3. [USACO18JAN] Lifeguards S (线段树:扫描线面积)
  4. css防止高度塌陷,css之高度塌陷及其解决方法
  5. 干货:如何打造一个直播平台
  6. 喜茶入股7家茶饮,从“打工仔”做起了“金主爸爸”?
  7. 银行利率bp是什么意思,利率加点bp怎么计算
  8. Docker、nvidia-container-toolkit安装与常用docker命令及docker镜像和容器的更新维护
  9. macOS升级node
  10. java开发中遇到的问题_Java开发过程中遇到的问题及解决方法