1、冒泡排序
依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。
2、代码实现
1 package com.wcy.sort; 2 3 public class BubbleSortTest { 4 5 /** 6 * 方法一 7 * @param arr 8 * @return 9 */ 10 public static int[] bubbleSort(int[] arr){ 11 int temp = 0; 12 for (int i = 0; i < arr.length - 1; i++) { 13 int flag = 1; // 检测排序结果是否结束 14 for (int j = 0; j < arr.length-1-i; j++) { 15 if (arr[j] > arr[j+1]) { 16 temp = arr[j+1]; 17 arr[j+1] = arr[j]; 18 arr[j] = temp; 19 flag = 0; 20 } 21 } 22 System.out.print("第"+(i+1)+"趟的排序结果为:"); 23 showArray(arr); 24 if (flag == 1) { 25 break; 26 } 27 } 28 29 return arr; 30 } 31 32 /** 33 * 方法一 34 * @param arr 35 * @return 36 */ 37 public static int[] bubbleSort2(int[] arr){ 38 int temp = 0; 39 for (int i = 0; i < arr.length-1; i++) { 40 int flag = 1; // 检测排序结果是否结束 41 for (int j = arr.length-1; j > i; j--) { 42 if (arr[j] < arr[j-1]) { 43 temp = arr[j-1]; 44 arr[j-1] = arr[j]; 45 arr[j] = temp; 46 flag = 0; 47 } 48 } 49 System.out.print("第"+(i+1)+"趟的排序结果为:"); 50 showArray(arr); 51 if (flag == 1) { 52 break; 53 } 54 } 55 56 return arr; 57 } 58 59 /** 60 * 打印数组函数 61 * @param arr 待打印的数组 62 */ 63 public static void showArray(int[] arr){ 64 System.out.print("["); 65 for (int i = 0; i < arr.length; i++) { 66 if (i == arr.length-1) { 67 System.out.print(arr[i]); 68 }else { 69 System.out.print(arr[i] + ","); 70 } 71 } 72 System.out.println("]"); 73 } 74 75 /** 76 * 用户页面测试 77 * @param args 78 */ 79 public static void main(String[] args) { 80 int[] arr = {36,25,48,12,25,65,43,57}; 81 int[] arrResult = bubbleSort2(arr); 82 System.out.print("最终冒泡排序结果为:"); 83 showArray(arrResult); 84 } 85 }