思路:
从第二个元素开始遍历,若当前元素小于前一个元素执行排序,将当前元素作为标准数,从标准数的前一个元素位置开始向前遍历并且要求遍历的元素大于标准数时,遍历元素向后移,最后当遍历元素不满足大于标准数时,将标准数赋给不满足的元素。
package DataStruct.Sort; import java.util.Arrays; public class InsertionSort { public static void main(String[] args) { int arr[]=new int[]{4,2,5,7,1,0,7,8,11,34}; insertionSort(arr); System.out.println(Arrays.toString(arr)); } public static void insertionSort(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&&temp<arr[j];j--) arr[j+1]=arr[j]; //将标准数赋给向前遍历时第一次遇到的小于或等于标准数的元素。 arr[j+1]=temp; } } } }