冒泡排序和插入排序
根据ideal的debug 显示,第一次进入for 循环的时候,没有进行 i++ 操作。 第二次进入循环的时候,就算不满足 i < 100 的条件,也会进行i++ 操作。
/** * 冒泡排序 * @param a 数组 * @param n 数组长度 */ public static void bubbleSort(int[] a, int n){ if (n <= 1){ return; } for (int i = 0; i < n; i++){ // 提前退出冒泡循环的标志位 boolean flag = false; for (int j = 0; j < n - i -1; j++){ if (a[j] > a[j + 1]){ // 交换 int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; // 表示有数据交换 flag = true; } } // 没有数据交换,提前退出 if (!flag){ break; } } } /** * 插入排序 * @param a 数组 * @param n 数组的长度 */ public static void insertionSort(int[] a, int n){ if (n <= 1){ return; } for (int i = 1; i < n; ++i){ int value = a[i]; int j = i - 1; // 寻找插入的位置 for (; j >= 0; --j){ if (a[j] > value){ // 数据移动 a[j + 1] = a[j]; }else { break; } } // 插入数据 a[j + 1] = value; } }