算法应该是理解错了,看到了更形象的动态图才恍然大悟,于是稍微修改下下,原本是要插入排序的,以下的看来更像是冒泡排序,循环的比较相邻的俩数

public class Test {

//冒泡排序

public static int[] insertionSort(int[] a,int r){

//

int key;//声明关键指

for(int i=0;i<r-1;i++){

if(a[i]>a[i+1]){//比较相邻元素值,按照大小交换

key=a[i];

a[i]=a[i+1];

a[i+1]=key;

}

//System.err.println(a.length-r+"轮:第"+(i+1)+"次结果");

//pArray(a);

}

r--;//以上已将数组最大值放置数组尾部

if(r>0){

insertionSort(a, r);//数组除最后一位剩余部分进行新一轮的排序

}

//终止排序返回结果

return a;

}

public static void main(String[] args) {

int[] a={2,12,13,1,3,4,6,5,7,8,10,11};

pArray(a);

pArray(insertionSort(a,a.length));

}

//打印数组元素为了查看结果

public static void pArray(int[] a){

for(int i:a){

System.out.print(i+",");

}

System.out.println();

}

}