今天刚了解了一下java的冒泡排序的原理,刚开始不是很懂,但是自己推导了一下就明白了,现在跟你们说说我的理解吧
public class Test05 {
public static void main(String[] args) {
int[] arr = new int[]{23,61,45,12,53,126}; //定义数组
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) { //输出排序后的数组
System.out.println(arr[i]);
}
}
}
说一下:
1、java的冒泡排序就是对数组遍历的简单操作
2、我的数组有六个元素,所以表示要循环五次选出第一到第五大的数,这样第六个自然就是最小的,所以"arr.length"要减一,也可以不减,不过运行效率会慢一点
3、冒泡排序的实质就是一个数和后一个数的比较,arr[j]和arr[j+1]的比较,所以为了防止数组越界的情况,所以的第二层for循环的"arr.length"就必须要减一,因为一个外层for循环执行一次就可以选出一个当前的最大值,所以每次就可以减一,可以用i来表示,所以会有"arr.length-1-i",当然也可以不减i,理由同上,但是必须减一
4,if判断的条件就是判断两个数的大小,如果满足条件就交换数据,按照我写的第二个数永远比第一个数大,以此类推
5、然后就可以依次输出排序后的数组元素了