数组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; |
} |
} |
} |
} //源代码片段来自云代码http://yuncode.net |
|
初级程序员
by: same 发表于:2016-04-19 14:47:10 顶(0) | 踩(0) 回复
求教了
回复评论