/** * 从后面未排序的元素中依次选择元素插入前面排好的序列中 * * @param arr */ public static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { swap(arr, j, j - 1); } else { break; } } }}
插入排序的优化:
/** * 从后面未排序的元素中依次选择元素插入前面排好的序列中 * 基本的插入排序每次比较都会交换,一次交换三次赋值,效率低 * 优化方法: * 被操作的元素依次往前比较过去,所有经过的位置原元素“后移”一位(往后赋值) * 直到找到能插入的位置插入 * * @param arr */ public static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { // 寻找元素arr[i]合适的插入位置 int e = arr[i];//e就是要被插入操作的元素 int j;//元素应该插入的位置 for (j = i; j > 0; j--) { //能经过 if (e < arr[j - 1]) { //往后赋值 arr[j] = arr[j - 1]; } else { break; } } //一次循环完成后,找到插入的位置就是j arr[j] = e; } }
2插入排序
最新推荐文章于 2021-05-25 16:50:57 发布