**插入排序 InsertionSort文章内含源码**

不停的往一个数组中添加数字(新来的数字),数组有序,新数字进入数组后会和右边判断大小,比他小则往左移一位,移后再进行判断,知道新来的数字 >= 左边的数字停止判断,数组再次有序

数组为   147                                 **有序**
添加一个数字 2
2 < 7,7交换位置    1427
2 < 4,4交换位置    1247
2 > 1,停止交换的判断       数组为  1247        **数组再次有序**
添加一个新数字 5           此时数组为 1247      **有序**
5 < 7,7 交换位置    12457
5 > 4,停止交换的判断        数组为12457        **再次有序**

代码:
InsertionSort.java

package cn.Text;

public class InsertionSort {
    
    
    public static void insertsort(int[] arr) {
    
    
        if (arr==null || arr.length<2){
    
    
            return;
        }
        //0~0有序  0~1有序   0~2有序  0~3有序  ...   0~n-1 有序     索引
        for (int i = 1; i < arr.length; i++) {
    
    
            while(i-1>=0 && arr[i-1]>arr[i]){
    
    
                Swap(arr,i-1,i);
                i--;
            }

        }
//        for (int i = 1; i < arr.length; i++) {
    
    
//            int CurrentNumberIndex=i;
//            while(CurrentNumberIndex-1>=0 && arr[CurrentNumberIndex-1]>arr[CurrentNumberIndex]){
    
    
//                Swap(arr,CurrentNumberIndex-1,CurrentNumberIndex);
//                CurrentNumberIndex--;
//            }
//        }

    }


    public static void Swap(int [] arr ,int i,int j){
    
    
        int tmp=arr[j];
        arr[j]=arr[i];
        arr[i]=tmp;

    }
    public static void PrintArray(int [] arr){
    
    
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
    
    
        int[] arr={
    
    5,9,13,22,4,56,3};
        PrintArray(arr);
        insertsort(arr);
        PrintArray(arr);
    }
}

在这里插入图片描述
代码来源于B站,侵权请联系删除

猜你喜欢

转载自blog.csdn.net/qq_46906413/article/details/122561866