**排序算法之冒泡算法的讲解以及此算法的优缺点**

**冒泡排序算法是非常常见的一种排序算法,通常用于对数组元素的排序,究竟什么是冒泡排序? **
一桶水中如果气泡共同处在一个维度或者说处在同一个水平面上,那么一定是最大的那个水泡最先浮出水面并破裂。

它重复地走访过要排序的元素列,依次比较两个相邻的元素
这种算法的特点是它会将最小或最大的数值慢慢的列在数组的顶端,所以叫冒泡排序。

 for(int a=arr.length-1;a>=0;a--){for(int i=0;i<a;i++){if(arr[i]>arr[i+1]){int k=arr[i];arr[i]=arr[i+1];arr[i+1]=k;}}}

冒泡排序的代码如上所示,该代码会依次将最大的数值排列出来。
外循环的变量 a 代表着本次循环会有多少个元素进行排序操作,内循环变量 i 代表着元素会进行几次交换。
例如 int [] arr=new int[]{2,6,1,3,4};数组。
在a为4的情况下代表0~4索引代表的元素都会进行排序操作,之后进入内循环从索引0开始。
2,6,1,3,4 二和六先进行比较,如果二比六大就会进行交换,反之亦然。之后轮到6和二进行比较,如果六比一大就会进行交换。
一轮过后数组的元素变化之后 2,1,3,4,6
此时内循环结束a–等于三,代表此轮进行排序操作的有 2,1,3,4,之后内循环开始执行,此轮执行结束之后数组元素 1,2,3,4。
可以发现一旦内循环结束之后,数组中最大的元素一定会出现在arr[a]处。
全部执行完毕之后此时数组中的元素为 1,2,3,4,6 已经全部交换完毕。
那么冒泡排序算法有什么缺点么?
效率低,因为最大元素出现在arr[a]之前的交换操作都是无意义的。

到这里,这篇博客就结束了,那么好,又有操作了:
**如内容有问题,恳请大佬们指出,小生定虚心接受。 **

排序算法之冒泡算法的讲解以及此算法的优缺点相关推荐

  1. 滑动窗口算法_从一道题讲解滑动窗口算法该如何实现

    我们先看看leetcode中对题目的描述: 3.无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  2. php递归算法排序,php常用的排序算法代码[冒泡,递归排序-PHP源码

    <script>ec(2);<script> php 常用的排序算法代码[冒泡,递归排序 冒泡排序算法 function bubblesort($arr) { $n=count ...

  3. 【学习排序】 Learning to Rank 中Listwise关于ListNet算法讲解及实现

    前一篇文章"Learning to Rank中Pointwise关于PRank算法源码实现"讲述了基于点的学习排序PRank算法的实现.该篇文章主要讲述Listwise Appro ...

  4. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  5. 用通俗易懂的方式讲解:CatBoost 算法原理及案例

    文章目录 知识汇总 解惑答疑 1.梯度提升概述 2.什么是 CatBoost 3.CatBoost 的主要特点 01 对称树 FloatFeature OneHotFeature OnlineCtr ...

  6. C语言从未排序的链接列表中删除重复项的算法(附完整源码)

    C语言从未排序的链接列表中删除重复项的算法 C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main函数测试) C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main ...

  7. 【学习排序】 Learning to Rank中Pointwise关于PRank算法源码实现

    最近终于忙完了Learning to Rank的作业,同时也学到了很多东西.我准备写几篇相关的文章简单讲述自己对它的理解和认识.第一篇准备讲述的就是Learning to Rank中Pointwise ...

  8. hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解

    提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解. 1.什么是Has ...

  9. 数字信号处理(DTFT与DFT、DFS的详细讲解以及FFT算法)

    DTFT与DFT.DFS的详细讲解以及FFT算法 DTFT与DFT.DFS的区别在哪里呢? 离散傅里叶级数DFS 离散傅里叶变换DFT 有限长序列的线性卷积和循环卷积 利用DFT做连续信号的频谱分析 ...

最新文章

  1. eclipse 启动 找不到 JRE JDK的解决方法
  2. python的表达式3or5_Python 简明教程 --- 5,Python 表达式与运算符
  3. STM32 C/C++ uCOSII 函数调用return 无法返回或者函数无法正常反回上一层函数的问题
  4. Domino+Qucikplace+Sametime构建企业办公平台图文攻略(四)
  5. 如果你的sharepoint 2013很慢...
  6. 如何使用Sublime Text 3作为Markdown编辑器
  7. c++ 经典代码_C语言经典100题(31)
  8. leetcode 730 Count Different Palindromic Subsequences
  9. [IT新应用]无线投影技术
  10. 工具 | CAN总线数据采集工具PCAN的使用教程
  11. Python+Kivy(App开发)从入门到实践
  12. Taro Next 发布预览版:同时支持 React / Vue / Nerv
  13. 芯片,建立在沙粒上的帝国!
  14. 研究报告的数据都从哪里来?
  15. 右键单击文件、文件夹,一直转圈圈的解决办法小总结
  16. 优秀的图文识别开源项目PandaOCR
  17. 预防域名dns劫持和解决
  18. Python - 列联表的独立性检验(卡方检验)
  19. 奥比中光进军世界的历程
  20. IMX6ULL博通wifi移植BCM4345C5

热门文章

  1. 有限内存BFGS以及非精确牛顿法
  2. 关于 Kubernetes中secret、configmap实操的一些笔记
  3. [D-VI] my_second_fpga(1位加法器 Verilog HDL抽象级别 modelsim-altrea功能仿真 综合器)
  4. C++中的头文件和源文件
  5. 计算机休眠时打印机将不可用,WIN10从睡眠中唤醒后共享打印机不可用
  6. 黑客集团揭密--“死亡军团”
  7. 在线AI智能写春联工具
  8. 驱动器控制模式功能简介(CSP CSV CST 等)
  9. Clickhouse学习笔记03——常用语法及分布式搭建
  10. c语言删除链表中特定元素,单链表的删除某个元素的操作