冒泡排序(Java) - 图1 冒泡排序说明:冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换,而从小到大排序是前面的数比后面的数大的时候交换。 冒泡排序的原理:从第一个数开始,依次往后比较,如果前面的数比后面的数大就交换,否则不作处理。这就类似烧开水时,壶底的水泡往上冒的过程。 根据动图:数组长度设为n。外层共循环了n-1次,外层循环增加一次,对应内层循环就 减少一次。
    1. public class BubblerSortTest {
    2. /**
    3. * 冒泡排序
    4. * 规则:从小到大排序 大的在右边小的在左边;
    5. *
    6. */
    7. @Test
    8. public void smallToLargeSorlTest(){
    9. //定义排序的数组
    10. int[] arr = {2, 8, 13, 11, 6, 7,-9};
    11. //打印排序前的数据
    12. System.out.println("排序前:" + Arrays.toString(arr));
    13. for (int i = 0; i < arr.length-1; i++) { //外层循环控制排序趟数
    14. for (int j = 0; j < arr.length-1-i; j++) { //内层循环控制每一趟排序多少次
    15. if (arr[j]>arr[j+1]){ //两两数值判断
    16. int temp = arr[j];
    17. arr[j] = arr[j+1]; //把大的值交换到后面
    18. arr[j+1] = temp; //把小的值交换到后面
    19. }
    20. }
    21. }
    22. System.out.println("排序后:" + Arrays.toString(arr));
    23. }
    24. /**
    25. * 排序规则:从大到小排序 大的在左边小的在右边;
    26. * 说明:如需从大到小排列,修改if语句的大于符号即可
    27. */
    28. @Test
    29. public void largeToSmallSorlTest(){
    30. //定义排序的数组
    31. int[] arr = {2, 8, 13, 11, 6, 7,-9};
    32. //打印排序前的数据
    33. System.out.println("排序前:" + Arrays.toString(arr));
    34. for (int i = 0; i < arr.length-1; i++) {
    35. for (int j = 0; j < arr.length-1-i; j++) {
    36. //修改if语句的大于符号即可
    37. if (arr[j]<arr[j+1]){
    38. int temp = arr[j];
    39. arr[j] = arr[j+1];
    40. arr[j+1] = temp;
    41. }
    42. }
    43. }
    44. System.out.println("排序后:" + Arrays.toString(arr));
    45. }
    46. }