假设有一个数组: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