冒泡排序 :
给定一个序列,从第一个数字开始,每次跟下一个相邻的数字比较,把大的放后边,也就是a[0]跟a[1]比较,a[1]跟a[2]比,a[2]跟a[3]比,以此类推,比到最后,
第一轮把最大的数,放到数组最后一位,
第二轮从第一个数开始比,比到倒数第二个数,把除了第一轮比较出来最大数之外的最大数,放在倒数第二位,
以此类推,直到循环比较结束,序列排好顺序
代码:
public static int[] getSort(int[] data) {
int len = data.length;
for (int i = 0; i < len - 1; i++) {//轮数
for (int j = 1; j < len - i; j++) {//每轮相邻两个数比较的次数
if (data[j] < data[j - 1]) {
int mid = data[j];
data[j] = data[j - 1];
data[j - 1] = mid;
}
}
}
return data;
}
小结:
比较的轮数为:从0开始到数组长度-2,也就是数组长度-1次
每轮比较的次数跟第几轮有关
如果数组长5,则需要4轮,(i =0,1,2,3代表轮号)
针对每一轮:
第0轮:比较4次
第1轮:比较3次
第2轮:比较2次
第3轮:比较1次
用一个变量 j 从1开始自增,到数组长度 j > len-i 停止,即每轮的比较次数