冒泡排序
{42,43,26,24,23}
第一轮:42与23相比,如果前一个数比后一个数大交换位置。在交换位置后{42,43,26,24,23},用后一位数(相比之后为43)与下一位数(26)相比,如果前一个数比后一个数大交换位置。重复直到与最后一位数相比完{42,26,24,23,43}。共需4次比较,且最后一位数为最大值。
经过第一轮变化为{42,26,24,23,43},且最后一位数确定为最大值。
第二轮:42与26相比,如果前一个数比后一个数大交换位置。在交换位置后
{26,42,24,23,43},用后一位数(相比之后为42)与下一位数(26)相比,如果前一个数比后一个数大交换位置。重复直到与倒数第二位数相比完{26,24,23,42,43},因为最后一位数已经确定。共需比较3次,且最后两位数可确定排序。
经过第二轮变化为{26,24,23,42,43},且最后两位数可确定排序。
第三轮:26与24相比,如果前一个数比后一个数大交换位置。在交换位置后
{24,26,23,42,43},用后一位数(相比之后为26)与下一位数(23)相比,如果前一个数比后一个数大交换位置。重复直到与倒数第三位数相比完{24,23,26,42,43},因为最后两位数已经确定。共需比较2次,且最后三位数可确定排序。
经过第三轮变化为{24,23,26,42,43},且最后两位数可确定排序。
第四轮:24与23相比,如果前一个数比后一个数大交换位置。得到最终答案
{23,24,26,42,43}。因为最后三位数已经确定
由上可知,共需四轮,每轮需要4-i次相比。
int[] a = {42,43,26,24,23};
// quickSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
//外层循环控制轮次数
for(int i = 0;i<a.length-1;i++){
//内层循环控制该轮比较次数
for (int j = 0;j<a.length-1-i;j++){
if (a[j]>a[j+1]){
int temp;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}