冒泡法就是相邻的元素比较大小,把最值往后放,下面详细介绍一下这段代码的执行过程
public static void bubbleSort(int[] arr)
{
w: for(int x=0; x<arr.length-1; x++)
{
k: for(int y=0; y<arr.length-x-1; y++)
{
if(arr[y]<arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
把外循环标记为w,内循环标记为k,假定数组arr是长度为4的数组,也就是下标从0~3。arr[4]={3,5,4,9};
第一次比较:w:arr[0] x=0
k:第一次:arr[0](3)<arr[1](5),满足条件,交换位置。此时,arr[0]=5,arr[1]=3.
第二次:arr[1](3)<arr[2](4), 满足条件,交换位置。此时,arr[1]=4,arr[2]=3.
第三次:arr[2](3)<arr[3](9), 满足条件,交换位置。此时,arr[2]=9,arr[3]=3.
共三次:arr.length-x-1=4-0-1
第一次循环后arr[4]={5,4,9,3},此时arr[3]=3是最小的元素,不需要再参于比较了。
第二次比较:w:arr[1] x=1
k:第一次:arr[0](5)>arr[1](4), 不满足条件。
第二次: arr[1](4)<arr[2](9), 满足条件,交换位置。此时,arr[1]=9,arr[2]=4.
共两次:arr.length-x-1=4-1-1=2.
第二次循环后arr[4]={5,9,4,3},此时arr[2]=4是倒数第二小的元素,不需要再参于比较了。
第三次比较:w:arr[2] x=2
k:第一次:arr[0](5)<arr[1](9), 满足条件,交换位置。此时,arr[0]=9,arr[1]=5.
共一次:arr.length-x-1=4-2-1
第三次循环后arr[4]={9,5,4,3},排序完成。
|