冒泡排序

冒泡排序思想:

假设有一个数组:int arr = {3,1,4,6,5}

第一趟

  第一步:下标为0的数字与下标为1 的数字做对比,若下标为0的数字大于下标为1的数字,二者做交换

  第二部:下标为1的数字与下标为2的数字做对比,若下标为1的数字大于下标为2的数字,二者做交换

  。。。。。。直到最大的数字移动到最后下标的位置

第二趟

  第一步:下标为0的数字与下标为1的数字做对比,若下标为0的数字大于下标为1的数字,二者做交换

  第二部:下标为1的数字与下标为2的数字做对比,若下标为1的数字大于下标为2的数字,二者做交换

  。。。。。。直到最大的数字移动到最后下标-1的位置

。。。。。。重复以上步骤,直到数组有序为止

冒泡排序代码及细节:

 1 int[] arr = {6,5,3,4,1};
 2 
 3         /**
 4          * 第一趟排序需要从0-N-1之间将最大的数浮到最后
 5          * 第二趟排序需要从0-N-2之间将最大的数浮到最后
 6          * 。。。。。。
 7          */
 8         for (int i = arr.length - 1; i > 0; i--){
 9             /**
10              * 这里为什么要j < i ?
11              * 每一组数字要进行arr[j]与arr[j+1]的比较
12              * j+1要等于最后比较数字的下标,所以j要小于i
13              */
14             for (int j = 0; j < i; j++){
15                 if (arr[j] > arr[j+1]){
16                     int tmp = arr[j];
17                     arr[j] = arr[j+1];
18                     arr[j+1] = tmp;
19                 }
20             }
21         }
22         for (int i = 0; i < arr.length ; i++){
23             System.out.println(arr[i]);
24         }
  输出结果:1,3,4,5,6
原文地址:https://www.cnblogs.com/lyc-code/p/12924790.html