读书人

直接插入排序异常

发布时间: 2012-05-15 14:35:29 作者: rapoo

直接插入排序错误

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
就行了

读书人网 >C语言

热点推荐