- class ArrayTest2
- {
- public static void bubbleSort(int[] arr)//定义函数功能,实现对数组的冒泡排序
- {/**冒泡排序的原理在于,从第一个角标的元素开始,与相邻的右边的数组元素比较,若相邻右边的元素小 于第一个角标的元素,则两个元素位置互换,角标值加一,进行下一个比较运算,最终得到的数组中最大角标的元素为该数组中的最大值,此时回到左边第一个角标元素,开始第二次比较,且最右边的最大角标元素不需要再参与比较,即每一次比较的元素减少。*/
- for(int x=0;x<arr.length-1;x++)//
- {
- for(int y=0;y<arr.length-x-1;y++)//让每一次比较的元素减少,-x。避免角标越界。
- {
- if(arr[y]>arr[y+1])//相邻的两个元素比较。若条件表达式成立,则互换位置。
- {
- int temp=arr[y];
- arr[y]=arr[y+1];
- arr[y+1]=temp;
- }
- }
- }
- }
- public static void main(String[] args)
- {
- int[] arr={12,5,17,30,4,7};
- bubbleSort(arr);//调用函数功能,对数组元素进行排序。
- printArray(arr);//打印排序后的数组元素。
-
- }
- public static void printArray(int[] arr)//定义功能,打印数组元素
- {
- System.out.print("[");
- for(int a=0;a<arr.length;a++)
- {
- if(a!=arr.length-1)
- System.out.print(arr[a]+",");
- else
- System.out.print(arr[a]);
- }
- System.out.print("]");
- }
- }
复制代码
以上代码中,冒泡排序的函数中有个嵌套循环,外循环代表冒泡排序每执行一圈,x的值加一,为内循环控制每一圈比较的元素个数铺垫,以y<arr.length-x-1来使每次比较的元素减少一个。内循环则执行一圈的完整的比较过程。
但愿我的解释对你有帮助。有不明白的再问我。多交流。:P |