提到冒泡排序,不知道大家还记得下面链接中的排序视频:冒泡排序,这个简单有趣的小视频有没有勾起内心深处的一点点回忆??下面小编就带着大家一起再来回顾和巩固这个经典的排序!

提起冒泡排序,也许会有人说这个太简单,由于它只适合数据规模很小的情况,而且效率也比较低,所以没有必要提起,但是它作为我们的Java排序入门的经典,需要我们去重视它,巩固它;

这种排序算法,和它的名字一样的原理,每次的循环都要把大/小的元素“冒”出去,所以我们可以把这个原理总结成下面的这句话:

升序:每一轮都会产生一个较大的数;第一轮循环执行完之后会产生一个最大的数并将最大的排到最后一个位置上;

降序:每一轮都会产生一个较大的数,第一轮会将最小的放到最后一个位置上;

了解了原理之后,我们一起来看代码的实现(比较的数为:4,7,8,9,3,2):

<span style="font-size:18px;">/**
* 一共两层循环,内部循环控制的是比较的下标
* @author root
*
*/
public class BubbleSortTest {

public static void bubbleSort(int[] array){
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-i-1; j++) {
if (array[j] > array[j+1]) {
//如果前者大于后者二者交换位置
int temp = array[j];
array[j]=array[j+1];
array[j+1] =temp;
}
}
System.out.println("第" + (i+1)+"趟排序");

for (int o = 0; o < array.length; o++) {
System.out.print(array[o] +" ");
}
System.out.println();
}
}

public static void main(String[] args) {
int [] array = {4,7,8,9,3,2};
bubbleSort(array);
}
}
</span>
根据代码中的逻辑,我们可以将循环的执行情况总结为以下:

i = 0

j = 0

j = 1

j = 2

j = 3

j = 4

i = 1

j = 0

j =1

j = 2

j = 3

i = 2

j = 0

j =1

j = 2

i = 3

j = 0

j =1

i = 4

j = 0

执行结果为:


所以我们可以发现,这个冒泡排序一共会进行 N-1(N 为当前要比较的元素个数)次排序,而每一次循环中内层循环次数在不断减少(为什么??)。因为每一次循环执行完毕之后都会有S个元素的位置已经确定(S等于当前第几趟排序的序号);而内层的循环控制的是需要比较的下标。这样说来,刚才的那个问题也就迎刃而解了。

上面就是小编关于冒泡排序的所有总结,不知道有没有帮大家回顾到冒泡排序这个经典中的经典呢?如果有更好的见解和建议,请大家留言哦!



更多相关文章

  1. Google Play服务API(位置服务)是否需要数据计划?
  2. 路径提供者文档目录是一个安全的位置吗?
  3. 设置自定义Dialog的大小和位置
  4. 以编程方式将位置模式更改为高精度Android
  5. 【Based Android】android通过criteria选择合适的地理位置服务
  6. Settings点击Location(位置)后右上角的开关button不会消失
  7. 在android上滚动时,列表视图的位置会发生变化
  8. DialogFragment自定义dialog的位置和大小
  9. android里通过什么什么事件可以拿到由于click后的EditText的光标

随机推荐

  1. 浙大网新-开启安卓开发高薪时代
  2. 如何分析解决Android(安卓)ANR
  3. Android开发(一)Android搭建、HelloWorld
  4. android 完美的ListView实现【原创】
  5. android中置调用指定浏览器
  6. Android实战【可可爱爱一零一动植物志】(
  7. android 随手记 videoview循环播放网络视
  8. Android黑科技动态加载(四)之动态启动插
  9. Android简介
  10. 【Android进阶】android:configChanges属