冒泡排序:每次都是相邻的两个数进行比较,后者如果比前者小就会交换位置,否则则不交换。
时间复杂度:原操作(基本操作)为交换操作,当数组按从小到大有序排列时,基本操作执行次数为0,当自大到小有序排列时,基本操作次数为n(n-1)/2,一般情况下讨论算法在最坏的情况下时间复杂度(个别取平均),所以时间复杂度为O(n^2).
void bubbleSort(int[] a){
int len = a.length;
int tmp;
for (int i = 0; i < len - 1; i++) {// cycle len-1 times
for (int j = 0;j<len-1-i;j++) {
if (a[j] > a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}