要求:输入一个数组A ,将A的元素从大到小排序
例如对 :3,5,7,10,9,32 进行排序
第一次排序:5,3,7,10,9,32
第二次排序:7,5,3,10,9,32
第三次排序:10,7,5,3,9,32
以此类推.........
思想:我们数组的第1个元素作为已经排序好的元素,从第2个元素到A.lenth-1元素插入到已经排好序的元素之中
public int [] inseretion_Sort(int A[]){
for (int i = 1; i < A.length; i++) {
int key = A[i];
int j=i-1;
while(j>=0&&A[j]>key){
A[j+1]=A[j];
j--;
}
A[j+1]=key;
}
return A;
}
while(j>=0&&A[j]>key)顺序不能写反!
&&会先判断j>=0 ,如果这个是false,那么就不会继续判断接下去的条件是否成立。
如果你这样写:while(A[j]>key&&j>=0),那当j<0的时候,就会爆出异常:java.lang.ArrayIndexOutOfBoundsException数组下标超出范围!