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));
        }
    }
}
经验分享 程序员 微信小程序 职场和发展