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">int</span> len=<span style="color: #000000">arr.length;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i=0;i<len-1;i++<span style="color: #000000">) {
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> j=0;j<len-1;j++<span style="color: #000000">) {
</span><span style="color: #0000ff">if</span>(arr[j]>arr[j+1<span style="color: #000000">]){
</span><span style="color: #0000ff">int</span> temp=<span style="color: #000000">arr[j];
arr[j]</span>=arr[j+1<span style="color: #000000">];
arr[j</span>+1]=<span style="color: #000000">temp;
}
}
}
System.out.println(Arrays.toString(arr));
}</span></pre>
2.冒泡排序优化代码 []arr={9,5
</span><span style="color: #0000ff">int</span> len=<span style="color: #000000">arr.length;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i=0;i<len-1-i;i++<span style="color: #000000">) {
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> j=0;j<len-1;j++<span style="color: #000000">) {
</span><span style="color: #0000ff">if</span>(arr[j]>arr[j+1<span style="color: #000000">]){
</span><span style="color: #0000ff">int</span> temp=<span style="color: #000000">arr[j];
arr[j]</span>=arr[j+1<span style="color: #000000">];
arr[j</span>+1]=<span style="color: #000000">temp;
}
}
}
System.out.println(Arrays.toString(arr));
}</span></pre>
3.冒泡排序最终代码 []arr={9,5
</span><span style="color: #0000ff">int</span> len=<span style="color: #000000">arr.length;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i=0;i<len-1;i++<span style="color: #000000">) {
System.out.println(</span>"第"+(i+1)+"趟"<span style="color: #000000">);
</span><span style="color: #008000">//</span><span style="color: #008000">增加判断位</span>
<span style="color: #0000ff">boolean</span> flag=<span style="color: #0000ff">true</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> j=0;j<len-1-i;j++<span style="color: #000000">) {
System.out.println(</span>"第"+(j+1)+"次"<span style="color: #000000">);
</span><span style="color: #0000ff">if</span>(arr[j]>arr[j+1<span style="color: #000000">]){
</span><span style="color: #0000ff">int</span> temp=<span style="color: #000000">arr[j];
arr[j]</span>=arr[j+1<span style="color: #000000">];
arr[j</span>+1]=<span style="color: #000000">temp;
flag</span>=<span style="color: #0000ff">false</span><span style="color: #000000">;
}
System.out.println(Arrays.toString(arr));
}
</span><span style="color: #008000">//</span><span style="color: #008000">如果上面没有执行直接退出</span>
<span style="color: #0000ff">if</span><span style="color: #000000">(flag){
</span><span style="color: #0000ff">break</span><span style="color: #000000">;
}
}
System.out.println(Arrays.toString(arr));
}</span></pre>
三.注意事项1.多思考(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |