[java]代码库
数组arr: | 13 | 12 | 18 | -3 | 0 |
第一轮 --------------------------
第一次: | 12 | 13 | 18 | -3 | 0 | //a[0]与a[1]比较,将值大的放在a[1];
<-------->
第二次: | 12 | 13 | 18 | -3 | 0 | //a[1]与a[2]比较,将值大的放在a[2];
<-------->
第三次: | 12 | 13 | -3 | 18 | 0 | //a[2]与a[3]比较,将值大的放在a[3];
<-------->
第四次: | 12 | 13 | -3 | 0 | 18 | //a[3]与a[4]比较,将值大的放在a[4];
<-------->
第二轮 --------------------------
第一次: | 12 | 13 | -3 | 0 | 18 | //a[0]与a[1]比较,将值大的放在a[1];
<-------->
第二次: | 12 | -3 | 13 | 0 | 18 | //a[1]与a[2]比较,将值大的放在a[2];
<-------->
第三次: | 12 | -3 | 0 | 13 | 18 | //a[2]与a[3]比较,将值大的放在a[3];
<-------->
第三轮 --------------------------
以此类推...
/*
*需求:冒泡比较
*
*思想:每轮的循环 --- 外循环;
* 每次的循环 --- 内循环;
* 外循环增加一次,内循环参数与比较的元素个数递减;
*/
public static void bubbleSort(int[] arr)
{
for(int i=0;i<arr.length-1;i++) //每轮的循环,找到最大值,放到最后。
{
for(int j=0;j<arr.length-1-i;j++)
//每次的循环,
//arr.length-1:不会越界;
//arr.length-1-i:为了让外循环增加一次,内循环参数与比较的元素个数递减
{
if(arr[j]>arr[j+1]) //两个相邻的数据值比较,值大的放到后面的数组元素。
{
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void bubbleSort(int[] arr)
{
for(int i=arr.length-1;i>0;i--) //需要比较的轮数。
{
for(int j=0;j<i;j++) //需要比较次数
{
if(arr[j]>arr[j+1]) //两个相邻的数据值比较,值大的放到后面的数组元素。
{
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}