冒泡,一个泡泡从水里冒出来,就是个从小到大的过程,所以冒泡排序也是个从小到大的排序
基本思想是
将最大的数找出来放在末位
如果要在一个数组中找最大值,我们一般都会遍历这个数组,然后两两比较,将现在的最大值记录下来,再用现在的最大值和下一个数值比较,最后找到最大值。
冒泡排序是在这个过程上的累加,第一趟找出最大值,放在最后一位,第二趟找出剩下最大值放在倒数第二位,第三趟......直到无交换或n-1趟完成
//手打代码,有可能缺胳膊断腿
public static void bubbleSort(int[] table) {
boolean exchange = true;
//有交换再进行下一趟,无交换说明后面的顺序都是正确的,最多进行n-1趟交换
for (int i = 1; i < table.length && exchange; i++) {
exchange = false; // 假定元素未交换
for (int j = 0; j < table.length - i; j ++) { //一趟的比较交换
if (table[j] > table[j +1]) { // 反序时,交换
int temp = table[j];
table[j] = table[j+1];
table[j + 1] = temp;
exchange = true; //记录交换
}
}
}
}
function bubbleSort(table) {
let exchange = true;
for (let i = 1; i < table.length && exchange; i++) {
exchange = false; // 假定元素未交换
for (let j = 0; j < table.length - i; j ++) { //一趟的比较交换
if (table[j] > table[j +1]) { // 反序时,交换
let temp = table[j];
table[j] = table[j+1];
table[j + 1] = temp;
exchange = true; //记录交换
}
}
}
return table;
}