只要后面的比前面的大,就交换(从大到小)
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小)
2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是array.length-1,但是写array.length代码也没有问题,比如5个数字在第4趟都已经排好了,再进行第5趟排序,也不会影响程序的结果.
3.内层循环变量的初始值写成int i =0,是为了保证每次都从第一个元素开始(索引为0)向后两两比较.但是内层循环的结束条件i<array.length-1-i,这里一定要-1,原因很简单,因为在内层循环中分表使用i和i+1作为索引获取数组的元素,就要保证i和i+1都不能超出数组的索引范围,即i<array.length && i+1<array.length 推导出i<array.length-1.最后的-i只是为了提高效率,因为每趟排序都会确定一个数组元素的位置,下一趟排序的时候,已经确定好位置的元素是不用继续排序的.
最后的for:
For(int I = 0;i < arr.length;i++){
Sout(arr[i] + “\t”);
}