直接插入排序

/**
 * @author upfly
 * @create 2021-06-17 16:33
 */
public class InsertSort {

    /**
     * 直接插入排序(从小到大)
     *
     * @param arr
     */
    public void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            // 如果当前元素小于有序子序列的最大值才需进行插入,否则无需移动
            if (arr[i] < arr[i - 1]) {
                int temp = arr[i]; // 临时变量保存当前元素

                // 移动元素 + 寻找插入位置
                int j;
                for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
                    arr[j + 1] = arr[j];
                }

                // 复制到插入位置
                arr[j + 1] = temp;
            }
        }
    }
}