算法應該是理解錯了,看到了更形象的動態圖才恍然大悟,於是稍微修改下下,原本是要插入排序的,以下的看來更像是冒泡排序,循環的比較相鄰的倆數
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();
}
}