用递归实现插入排序
插入排序的原理是从头遍历到尾部,从一个逐次递增,先一个排,然后两个排,然后…多个排序之后,获得结果
递归:要找出口 当只有一个元素的时候不需要进行排,所以直接返回 这时我们已经解决了寻找出口问题
找相同之处:当有两个数的时候,前数大于后数,需要将两数交换位置,当有三个数的时候,先比对后两个交换位置,然后通过递归来依次向前移动,所以我们可以得到相关判断:
从尾部开始向前移动
public static void main(String[] args) { int a[] = {1,8,9,31,13,4,7,4}; int b = a.length-1; insert(a,b); for (int i = 0;i<a.length;i++){ System.out.print(a[i]+" "); } } // 5 6 32 4 8 // 插入排序 static void insert(int[] a, int b){ if (b == 0){ return; } insert(a,b-1); int c = b-1; while(b>0 && a[b-1]>a[b]){ a[b-1]=a[b-1]^a[b]; a[b]=a[b-1]^a[b]; a[b-1]=a[b-1]^a[b]; b--; } // 3 1 5 2 // 3 1 2 5 }