Java_冒泡排序_原理及优化

冒泡排序及其优化

一.原理及优化原理

  1.原理讲解

    冒泡排序即:第一个数与第二个数进行比较,如果满足条件位置不变,再把第二个数与第三个数进行比较.不满足条件则替换位置,再把第二个数与第三个数进行比较,以此类推,执行完为一个趟,趟数等于比较的个数减一.

  2.冒泡排序原理图示:(以98765序列为例,排序结果从小到大)

   

  3.冒泡排序优化

  优化版:每一次减少一次循环(即红色部分不需要在进行比较)

  

  4.冒泡排序最终版

  最终版:每一趟减少一次循环(删除线不需要再执行)

  

二.实现代码

  1.冒泡排序实现主要代码

  

public static void main(String[] args) {
        int []arr={9,8,7,6,5};

        int len=arr.length;

        for (int i=0;i<len-1;i++) {

            for (int j=0;j<len-1;j++) {
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));

    }

冒泡排序实现代码

  

  2.冒泡排序优化代码

  

public static void main(String[] args) {
        int []arr={9,8,7,6,5};

        int len=arr.length;

        for (int i=0;i<len-1-i;i++) {

            for (int j=0;j<len-1;j++) {
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));

    }

冒泡排序优化代码

  

  3.冒泡排序最终代码

  

public static void main(String[] args) {
        int []arr={9,8,7,6,5};

        int len=arr.length;

        for (int i=0;i<len-1;i++) {
            System.out.println("第"+(i+1)+"趟");
            //增加判断位
            boolean flag=true;
            for (int j=0;j<len-1-i;j++) {
                System.out.println("第"+(j+1)+"次");

                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    flag=false;
                }
                System.out.println(Arrays.toString(arr));
            }
            //如果上面没有执行直接退出
            if(flag){
                break;
            }
        }
        System.out.println(Arrays.toString(arr));

    }

冒泡排序最终版

三.注意事项

  1.多思考

原文地址:https://www.cnblogs.com/aihuadung/p/9260831.html

时间: 2024-07-30 09:47:37

Java_冒泡排序_原理及优化的相关文章

Nginx工作原理和优化

Nginx工作原理和优化 分类: Linux webserver2013-05-16 11:04 4975人阅读 评论(0) 收藏 举报 目录(?)[+] 1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作. Nginx

MySQL join的实现原理及优化思路

Join 的实现原理 在MySQL 中,只有一种Join 算法,也就是Nested Loop Join,没有其他很多数据库所提供的Hash Join,也没有Sort Merge Join.顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果.如果还有第三个参与Join,则再通过前两个表的Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复. 下面

css匹配原理与优化

一. 匹配原理 浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找.比如之前说的 DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:先查找 html 中所有 class=’red’ 的 span 元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有 id 为 divBox 的 div 元素,如果都存在,则 CSS 匹配上. 浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素.Firefox 称这种查找方式为 ke

搜狗拼音输入法7.2c正式版(支持win8)_去广告优化版

搜狗,狗种之王..... 去广告版本: ========= 1.去除多余皮肤.在线安装浏览器.升级文件 2.去除所有弹窗广告 3.安装后默认设置.不自动升级.开启模糊功能.不开启细胞和升级.不开启地址搜索与节日等功能. 4.增加安装时可选特效字体.图片表情.皮盒子.增加手写输入安装选项 5.默认不安装搜狗皮肤盒子.Flash皮肤 6.新增去除网址直达.搜索提示组件 7.支持winxp\Vista\win7\win8.支持32\64位 8.对卸载.安装进一步改善,完全支持不同版本覆盖安装.并且支持

【总结】冒泡排序及冒泡排序的两种优化

------------------------------------------------------------------------------------------------------ 冒泡排序(bubble sort)算法的运作如下:从前往后一次比较相邻的两个元素,如果第二个比第一个元素小,则交换这两个元素,一直到与最后一个元素比较完成,这样最大的元素就放到了最后:这样重复比较(n-1)次即可完成排序. -----------------------------------

浏览器内核、引擎、页面呈现原理及其优化

浏览器内核.引擎.页面呈现原理及其优化 介绍浏览器内核.JavaScript 引擎以及页面呈现原理等基础知识,同时根据原理提出页面呈现优化方案. 浏览器内核 浏览器内核又叫渲染引擎,主要负责 HTML.CSS 的解析,页面布局.渲染与复合层合成.浏览器内核的不同带来的主要问题是对 CSS 的支持度与属性表现差异. 现在主流的内核有:Blink.Webkit.Gecko.EdgeHTML.Trident,这里面有几个需要注意的地方: Blink 是在 Webkit 的基础上的改进,是现在对新特性支

mysql索引查找原理及优化

原文:mysql索引查找原理及优化 常见查找方法 1.顺序查找(linear search ) 1. 最基本的查询算法当然是顺序查找(linear search),也就是对比每个元素的方法,不过这种算法在数据量很大时效率是极低的. 2. 数据结构:有序或无序队列 3. 复杂度:O(n) 2.二分查找 1. 从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: 2. 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且根开始一样从中间元素开始比较.

交换排序_冒泡排序_优化2(双向起泡)

可能大家又发现了,第一个优化算法只能找到底部排序好的,如果前几个也是排好序的呢? 就比如1 2 3   6 4 7 5   8 9 10 很明显,如果还按照第一个优化的方法来算话,前面排好序的 三个元素每次都要被扫描一次,如果有这种情况的话,就浪费了很多资源,所以我们将这个冒泡 从两头开始,一头从低到高,一头从高到低,原理是一样的. 1 #include <stdio.h> 2 #include <stdlib.h> 3 void BubbleSort(int *Array,int

正则表达式基础、原理及优化

前言 正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本.简单说就是一个特殊的字符串去匹配一个字符串.定义了一些规则,用于匹配满足这些规则的字符串. 对于正则表达式应该很多人第一感觉就是很难,完全没有规律,看不懂. 我觉得可能有以下几个原因: 1.读不懂. 各种不同的字符组合一起,难以理解.确实,对于熟悉正则表达式的人来说,一个稍微长点的正则表达式想要理解起来,可能也要花费一定的功夫.可读性差是正则表达式的