java插入法排序学习笔记

来源:互联网 发布:iphone6s蜂窝数据快捷 编辑:程序博客网 时间:2024/06/04 17:44
/** * 算法思想:从数组的第二位开始逐个将之后的元素插入数组之中, * 整个过程保证插入新数据之前,已有的数组是排好序的。 * 每次插入新数据时,将新数据与已有数组最后一个元素比较, * 如果新数据较小,将已有的数组中进行比较的这个数据后移一位, * 再将新数据与已有数组的前一位比较,如果还是新数据较小, * 再将进行比较的数据后移一位,直到找到新数据的位置,将新数据赋值给这一位。 * 最后一个数据插入数组后排序完成。 */static void sort(int[] arr){for (int i = 1; i < arr.length; i++) {//如果新元素小于已有数据的最大值,那么移动数据时会覆盖arr[i],所以定义临时变量保存arr[i]int temp = arr[i];int j;//在内层循环之外定义循环变量是为了在循环结束后,将新插入的数据赋值给找到的位置/* * 从新数据的前一位开始,依次与新数据比较,如果大于新数据,该数据后移一位。 * 由于原数据是有序的,所以第一个小于新数据的位置的后一位就是新数据应该插入的位置。 * 如果没有小于新数据的数据,j=-1时退出循环,新数据插在第一位,也能保证插入正确。 */for (j = i - 1; j >= 0 && arr[j] > temp; j--) {arr[j+1] = arr[j];}arr[j+1] = temp;}}