Java插入算法的基本思想与简单实现
Java 实现插入算法
思想
将一个数组分为两个部分: 排好的部分------>1 没有排好的部分------->2 将2的部分的第一个元素依次跟前面的每个数相比,遇到比其大的就继续向前比较; 直到遇到比他小的数,然后插入这个数的后面。
具体实现步骤
1.从第一个元素开始,将第一个元素看作是已经排好的数。 2.取出下一个元素,然后与前面排好的元素相比(从后向前依次比较)。 3.直到这个元素遇到比他小的元素。 4.将新元素插入到该元素的后面。 5.重复以上步骤。
实现代码
public class Insert { public static void main(String[] args) { int[] arr = { 5,2,4,1,3,6,5,7,8,9}; insert(arr); // System.out.println(Arrays.toString(arr)); } public static void insert(int[] arr) { int j = 0; //循环的轮数 i=1没有必要和自己比 for (int i = 1; i < arr.length; i++) { //拿出需要排序的元素 int temp = arr[i]; //j=i-1,将排好的控制在数组的左边 /* 1.判断条件arr[j]>temp 将需要排序的元素向前比较 直到找到比这个数大的(因为i-1之前的元素我们是排好的) 2.j>=0,当不满足这个条件时,说明这个数目前最小,需要排在第一个 */ //j--是为了向前扫描 for (j = i - 1; j >= 0 && arr[j] > temp; j--) { //将满足循环时,每比较一次就把该元素向后移动一位 arr[j + 1] = arr[j]; } //将需要插入的元素,插入数组中 //j+1是因为,最后一次循环后(j--)多减了一次 arr[j + 1] = temp; System.out.println("第"+i+"次循环后:"+Arrays.toString(arr)); } } }