java冒泡算法的思路及实现解析
冒泡算法的核心思想犹如冒泡一样小的数一轮往上冒,大的数往下沉。(或者相反),所以记不住冒泡的可以想象水的冒泡。
冒泡排序实现:
- 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素;
( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;) - 对序列当中剩下的n-1个元素再次执行步骤1。
- 对于长度为n的序列,一共需要执行n-1轮比较
(利用while循环可以减少执行次数)
代码实现:
/**
* 冒泡算法
*/
public class maopao {
public static void main(String[] args) {
int[] array = {45,43,98,23,21,28,56,24,58};
int i = 0;
//外层循环控制比较的次数
while (i<array.length-1){
//内层循环控制到达位置
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;
}
}
i++;
System.out.println(Arrays.toString(array));
}
System.out.println(Arrays.toString(array));
}
}
运算结果:
[43, 45, 23, 21, 28, 56, 24, 58, 98]
[43, 23, 21, 28, 45, 24, 56, 58, 98]
[23, 21, 28, 43, 24, 45, 56, 58, 98]
[21, 23, 28, 24, 43, 45, 56, 58, 98]
[21, 23, 24, 28, 43, 45, 56, 58, 98]
[21, 23, 24, 28, 43, 45, 56, 58, 98]
[21, 23, 24, 28, 43, 45, 56, 58, 98]
[21, 23, 24, 28, 43, 45, 56, 58, 98]
[21, 23, 24, 28, 43, 45, 56, 58, 98]