插入排序(王道书思想Java实现)
因为王道是对数组下标[1,n]进行排序,本文是对下标为[0,n-1]进行排序,故对代码进行一定变动
public void InsertSort(int A[],int n){ //长度为n的整数数组,下标0~n-1
for(int i=1;i<n;i++){ //从A[1]开始插入
if(A[i]<A[i-1]){ //遍历到的A[i]若小于前驱则插入前方的有序表
int temp=A[i],j=i-1; //新建一个变量temp存储A[i]
while(j>=0&&A[j]>temp){ //这里通过while确定插入位置,使用for易产生数组越界
A[j+1]=A[j];
j--;
}
A[j+1]=temp; //此时的A[j]小于temp,A[j+1]=A[j+2]都大于temp
}
}
}