冒泡排序和插入排序
Posted prader6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序和插入排序相关的知识,希望对你有一定的参考价值。
根据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; } }
以上是关于冒泡排序和插入排序的主要内容,如果未能解决你的问题,请参考以下文章
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚