一般冒泡排序只是两个for循环,现在再加一个条件,如果成立,即如果在某次遍历中没有发生交换,那么就没必要进行下一次遍历,因为此时数据已经是排好序了。
下面是核心内容:
boolean needNextPass = true;
for (int i=0; i<list.length-1 && needNextPass; i++) {
needNextPass = false;
for (int k=0; k<list.length-1-i; k++) {
if (list[k] < list[k+1]) {
int temp = list[k];
list[k] = list[k+1];
list[k+1] = temp;
needNextPass = true;
}
}
}