直接插入排序错误
void InsertSort2(int a[], int n){ if(n<2)return; for(int i=1; i<n; i++) { int j=i-1; int val=a[i]; while( j>=0 && val<a[j]) { a[j+1]=a[j]; j--; } a[j]=val; }}void InsertSort2(int a[], int n){ if(n<2)return; for(int i=1; i<n; i++) { int j=i-1; int val=a[i]; while( j>=0 && val<a[j]) { a[j+1]=a[j]; j--; } j++;//恢复到该插入数据的位置 if(j!=i) a[j]=val; }}
[解决办法]
最后一句直接改为
a[j+1] = val
就行了