冒泡排序
用化繁为简和先死后活两种编程思想讨论冒泡排序。
根据先死后活原理,我们先就 [24,69,80,57,13] 这个数组进行讨论。
然后根据化繁为简,我们先不管第几轮排序和第几次比较之间的关系,只讨论每一轮排序:
//第一轮排序
for(int j = 0;j < 4;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]= temp;
}
}
//第二轮排序
for(int j=0;j<3;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]= temp;
}
}
//第三轮排序
......
可以发现,每一轮排序的内容都是一样的,只不过j的判断退出条件不太一样。看出离开每一轮排序的关系后,我们再看看怎么控制排序的轮数:
for(int i = 0;i < 4;i++) // 控制轮数
然后我们就要进行从死到活中的“到活”了—— 假设数组长度为n, j每次都从0开始,判断条件是 j<n - 1 - i。i也是从0开始,i<n - 1。
for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr.length - 1 - i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}