2插入排序

来源:互联网 发布:大数据下的人力资源 编辑:程序博客网 时间:2024/06/16 01:58
/** * 从后面未排序的元素中依次选择元素插入前面排好的序列中 * * @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;    }}








原创粉丝点击