1.代码段实现:(混的只需要把第一个拿走即可)
public static void main(String[]args){
int []arr = new int [] {99,68,97,86,65,94,33,72};
System.out.println("排序前的数组为:");
for (int i = 0;i < arr.length;++i)
{
System.out.print(arr[i]+ " ");
}
System.out.println();
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;
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("排序后的数组为:");
for (int i = 0; i < arr.length;i++)
{
System.out.print(arr[i]+ " ");
}
}
2.代码的结果:
3.代码的解释:(恭喜你,勤奋的人!)
首先冒泡循环只需要弄懂三个问题:
(1).外层循环控制什么?
由于在排序到最后时,最后的那一个数据无需排序,由于前面的排序将后面的数据已经按照相应的顺序完成排序:所以要使 arr . length - 1,由于本案例输入8个数据元素,而排序只需要排7次即可 所以从 int i = 0;开始到 i < arr . length - 1 共7次(不信的可以算算:0,1,2,3,4,5,6)
答:控制着要排序的次数
(2).内层循环控制着什么?
由于冒泡排序的思路是: 比较两个数的大小,将两个中的大的数向后移,然后依次再和下一个数进行比较,较大的数在向后移,而每次都需要将j 从0开始依次的比较一直到 arr . length - 1又由于经过 i 次的排序,后面的数据已经排序完成 则后面的数据无需继续在排序,即为:
arr . length - 1 - i
答:控制着每次都是从 int j = 0的下标开始依次的向后比较排序
(3).交换干什么?
答:它控制着你想从大到小排序 还是想从小到大的排序