java 冒泡排序 经典算法题
Posted j1639797
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 冒泡排序 经典算法题相关的知识,希望对你有一定的参考价值。
// 冒泡排序:经典算法题。
// 有一组数字 2,10,8,20,11,把这组数按照从大到小的顺序排列出来。20,11,10,8,2
// 2,10,8,20,11
// 找出最大的数,放到第一位(1,2,3,4,5)
// 20,10,8,2,11
// 从剩下的4个数中,找最大的(2,3,4,5)
// 20,11,8,2,10
// 从剩下的3个数中,找最大的(3,4,5)
// 20,11,10,2,8
// 从剩下的2个数中,找最大的(4,5)
// 20,11,10,8,2
上面是老师给的步骤,我没仔细看 先自己想了想
int[] a = {2,10,8,20,11}; boolean panDuan = true; int num = 0; System.out.println("输出原数组:"); //输出原数组 for (int i : a) { System.out.print(i+" "); } System.out.println(); while(panDuan) //最外层循环 设置成死循环,只有当内层循环判定条件满足后才跳出循环 { for(int i = 0 ; i<4 ;i++) //i为 数组下标,因为4是最后一位,如果前面运行正常,是不需要再比较的.所以范围设置为i<4就可以了 { for(int j = 4 ; j>=0 ;j--) // j同为数组下标,数组下标为i的元素,与数组中的元素,以倒序的顺序依次比较. { if(i == j || i > j) //当i = j 或者 i>j时,如果前面运行正确,是不需要再比较的 ,并且不继续运行下去,所以跳出变量为j的循环,继续执行变量为i的循环 { break ; }else if(a[i]<a[j]) //当满足条件,交换两个元素的位置 { a[i] = a[i]+a[j]; a[j] = a[i] - a[j]; a[i] = a[i] - a[j]; } } } for(int k = 0 ; k <4 ; k++) //检测循环 用来判断 现在的数组是否达到条件 { for(int l = 4 ;l >= 0 ; l--) { if(k == l || k > l) { break ; }else if(a[k]>a[l]) //判断大小 { num++; //如果条件正确,num+1 } } } if(num == 10) //如果条件都正确,那么num应该加10次,所以 当num=10,将布尔值的panDuan值改成false,就可以跳出while循环. { panDuan = false; } num = 0; //如果一次循环达到想要的数组,将num归0,继续循环直到正确. } //while 结束括号 System.out.println("输出排序后数组:"); for (int m : a) { System.out.print(m+" "); } } }
(初学java,博客记录为主,轻喷,错误想必不少,如果您能指出,不胜感激,部分内容非原创,来源于百度)
以上是关于java 冒泡排序 经典算法题的主要内容,如果未能解决你的问题,请参考以下文章