java排序算法----插入排序

排序算法之插入排序。插入排序就是从未排序的数组中,选择第一个,然后插入到已排序好的数组中;默认第一个是已排好序的数组,从第2个数到结尾所有的数都属于未排序数组;代码如下;

package com.example.demo.sort;

/**
 * 插入排序;将数组分为已排序和未排序两部分;默认第一个数是已排序数组;其余的都未未排序部分
 * 故从第2个数开始,循环插入到有序的数组,主要是找到待插入数,在已排序中的下标是多少
 */
public class SortInsertDemo2 {
    public static void main(String[] args) {
        //待排序数组
        int[] arry = {2,5,9,18,6,4};
        //因为默认从第2的数开始为未排序部分,故i从1开始循环;
        //因为需要循环到数组的最后一个数,故i<arry.length.而不是i<arry.length-1;(交换排序,循环的话是:i<arry.length-1,因为i需要与下一个元素比较,如果到最后一个元素,会数组越界)
        for(int i=1;i<arry.length;i++){
            //获取待插入的数(即待排序部分的第一个数)
            int current = arry[i];
            //待插入数的前一个数的下标
            int index = i-1;
            //通过while找到待插入数,该插入的数组下标数,从有序数组的最后一个开始比较;
            while(current<arry[index]){
                //如果与前一个数比较,待插入数小。将有序数组的数,向后移动一个下标;
                arry[index+1]=arry[index];
                 --index;
            }
            //将待插入数,插入正确的数组位置;
            arry[index+1] = current;
        }
        //循环打印出排序后的数组
        for(int i=0;i<arry.length;i++){
            System.out.println(arry[i]);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq516071744/article/details/86651721