加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java_冒泡排序_原理及优化

发布时间:2020-12-14 06:26:20 所属栏目:Java 来源:网络整理
导读:冒泡排序及其优化 一.原理及优化原理 1.原理讲解 冒泡排序即:第一个数与第二个数进行比较,如果满足条件位置不变,再把第二个数与第三个数进行比较.不满足条件则替换位置,再把第二个数与第三个数进行比较,以此类推,执行完为一个趟,趟数等于比较的个数减一. 2.

冒泡排序及其优化

一.原理及优化原理

  1.原理讲解

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

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

   

  3.冒泡排序优化

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

  

  4.冒泡排序最终版

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

  

二.实现代码

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

[]arr={9,8,7,6,5 </span><span style="color: #0000ff"&gt;int</span> len=<span style="color: #000000"&gt;arr.length; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i=0;i<len-1;i++<span style="color: #000000"&gt;) { </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> j=0;j<len-1;j++<span style="color: #000000"&gt;) { </span><span style="color: #0000ff"&gt;if</span>(arr[j]>arr[j+1<span style="color: #000000"&gt;]){ </span><span style="color: #0000ff"&gt;int</span> temp=<span style="color: #000000"&gt;arr[j]; arr[j]</span>=arr[j+1<span style="color: #000000"&gt;]; arr[j</span>+1]=<span style="color: #000000"&gt;temp; } } } System.out.println(Arrays.toString(arr)); }</span></pre>

  

  2.冒泡排序优化代码

[]arr={9,5 </span><span style="color: #0000ff"&gt;int</span> len=<span style="color: #000000"&gt;arr.length; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i=0;i<len-1-i;i++<span style="color: #000000"&gt;) { </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> j=0;j<len-1;j++<span style="color: #000000"&gt;) { </span><span style="color: #0000ff"&gt;if</span>(arr[j]>arr[j+1<span style="color: #000000"&gt;]){ </span><span style="color: #0000ff"&gt;int</span> temp=<span style="color: #000000"&gt;arr[j]; arr[j]</span>=arr[j+1<span style="color: #000000"&gt;]; arr[j</span>+1]=<span style="color: #000000"&gt;temp; } } } System.out.println(Arrays.toString(arr)); }</span></pre>

  

  3.冒泡排序最终代码

[]arr={9,5 </span><span style="color: #0000ff"&gt;int</span> len=<span style="color: #000000"&gt;arr.length; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i=0;i<len-1;i++<span style="color: #000000"&gt;) { System.out.println(</span>"第"+(i+1)+"趟"<span style="color: #000000"&gt;); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;增加判断位</span> <span style="color: #0000ff"&gt;boolean</span> flag=<span style="color: #0000ff"&gt;true</span><span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> j=0;j<len-1-i;j++<span style="color: #000000"&gt;) { System.out.println(</span>"第"+(j+1)+"次"<span style="color: #000000"&gt;); </span><span style="color: #0000ff"&gt;if</span>(arr[j]>arr[j+1<span style="color: #000000"&gt;]){ </span><span style="color: #0000ff"&gt;int</span> temp=<span style="color: #000000"&gt;arr[j]; arr[j]</span>=arr[j+1<span style="color: #000000"&gt;]; arr[j</span>+1]=<span style="color: #000000"&gt;temp; flag</span>=<span style="color: #0000ff"&gt;false</span><span style="color: #000000"&gt;; } System.out.println(Arrays.toString(arr)); } </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;如果上面没有执行直接退出</span> <span style="color: #0000ff"&gt;if</span><span style="color: #000000"&gt;(flag){ </span><span style="color: #0000ff"&gt;break</span><span style="color: #000000"&gt;; } } System.out.println(Arrays.toString(arr)); }</span></pre>

三.注意事项

  1.多思考

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读