冒泡排序的思路:用相邻两元素比较,符合要求交换位置。
例子中使相邻两元素比较,大的放右边,最终实现从小到大的排序。
第一步:首先实现一个数组中最大值在最右边:
public static void main(String args[]){ int[] arr = {12,4,2,34,8}; //定义一个数组arr bubbleSort(arr); //调用方法bubbleSort System.out.println("排序后为:"); //打印最后结果 for(int i = 0;i<arr.length;i++){ System.out.print(arr[i]+","); } } public static void bubbleSort(int[] arr){ for(int i = 0; i<arr.length-1;i++){ if(arr[i]>arr[i+1]){ int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } }
打印出来如下:
排序后为:
4,2,12,8,34,
第二步:把第二大的值送到最后一位的左边
添加代码段如下:
for(int i = 0;i<arr.length-1-1;i++){ if(arr[i]>arr[i+1]){ int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } }
同样,一次类推;最终可以达到将数字从小到大的排序;
总结我们的代码,
public static void main(String args[]){ int[] arr = {8,34,4,2,12}; bubbleSort(arr); //定义方法bubbleSort System.out.println("排序后为: "); for(int i = 0;i<arr.length;i++){ System.out.print(arr[i]+","); } } public static void bubbleSort(int[] arr){ for(int j = 0;j<arr.length-1;j++){ //j用于控制轮数,只要length-1轮即可 for(int i = 0;i<arr.length-1-j;i++){ i用于控制两个数字之间比较与交换 if(arr[i]>arr[i+1]){ int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } } }
排序后为:
2,4,8,12,34,