本帖最后由 王婷婷 于 2013-5-7 18:21 编辑
07.for (int a=0;a<arr2.length;a++ ) 这里a<arr2.length-1 因为当每次比较到最后一个时,最后一个元素不需要再比较
写一下自己对冒泡排序的理解吧:
取相邻的两个元素比较,如果符合条件则两个元素换位。
在换位的时候要定义一个第三方变量用于记录相对来说大的元素(当然排序的顺序可以是从大到小或从小到大)
还是建议将换位的具体流程用画图的方式表现出来,只要自己动手将排序的流程理清楚,基本上代码也就出来了(呃,我有的时候,虽然能明白流程还是写不出代码)
所以,必要的时候也可以记着理解。
public static void bubbleSort(int[] arr)
{
//当每次比较到最后一个时,最后一个元素不需要再比较
for (int x = 0;x<arr.length-1 ;x++ )
{
//当每比较一次,被比较的元素就会减少1 -x
//避免角标越界 -1
for (int y = 0;y<arr.length-x-1 ; y++)
{
//如果arr[y]>arr[y+1],置换位置,
if (arr[y]>arr[y+1])
{
//定义第三方变量记录最大值,然后换位
int temp = arr[y];
//此时arr[y]>arr[y+1],将两个元素交换位置,将arr[y+1]赋给arr[y],此时y角标位置没有元素
arr[y] = arr[y+1];
//将大值temp放到y角标位置
arr[y+1] = temp;
}
}
}
}
主函数调用bubbleSort()方法
int[] arr = {3,2,8,5,7,11};
bubbleSort(arr); |