插入排序的基础应用

public class Main{
    public static void main(String[] args) {
        //int arr[]={110,34,65,1};
        int arr[]={110,34,119,1};
        for(int i=1;i<arr.length;i++){
            int a=arr[i];//让a=数组的第二个数,从第二个数开始比较
            int b=i-1;//让b等于要比较的数的前一个数
            while(b>=0 && a<arr[b]){//b>=0的目的是防止越界,a<arr[b],是判断拿到的数是否比它前一个数小,如果小则交换,否则便在原位
                //说明待插入的数还没有找到插入位置
                arr[b+1]=arr[b];//将拿到的数的前一个数,后移一位
                //System.out.println(Arrays.toString(arr));//检测每次的交换结果
                b--;//确保比较的次数,让拿到的数跟前面的前面的数比较(反复比较,直到元素初始位置前面的数都比完)
            }
            //当退出while循环时说明插入位置被找到,这个位置是arr[b+1]
            arr[b+1]=a;//当b<0 && a>arr[b]时说明当前的数就是目前最大的数,位置不变。或者说将拿到的数插入到比较数的后面一位
            System.out.println("第"+i+"轮:");
            System.out.println(Arrays.toString(arr));//输出排序后的数组
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_62731133/article/details/123832919