public class InsertSortAlgorithm {public static void insertSort(int[] arr){//如果数组为null,或者数组为空或只有一个元素if (arr == null || arr.length < 2){return;}int n = arr.length;//0-1//0-2//0-3//0-n-1for (int end = 1; end <= n-1; end ++){int newValueIndex = end;//注意这里的newValue - 1 >= 0的条件经常性忘记,这里是保证插入数据的前一个数据位置存在,如果小于0就是说明位置不存在了while(newValueIndex -1 >= 0 && arr[newValueIndex] < arr[newValueIndex -1]){swap(arr, newValueIndex, newValueIndex-1);newValueIndex --;}}}//互换位置,将最小的数置前public static void swap(int[] arr, int i, int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void printArr(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 = {7, 2, 3, 8, 4, 1, 6, 1, 9};//排序前打印一次printArr(arr);//排序insertSort(arr);//排序后打印一次printArr(arr);}}
注:插入算法的基数是围绕要插入的数来进行遍历排序的
