直接插入排序错误
- C/C++ code
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; }}怎么干啊,
a[j]=val;这里没有检测条件, 加什么条件来 检测呢????只加j>=0来检测是不行的。。。。。
[解决办法]
- C/C++ code
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
就行了