首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

直接插入排序异常

2012-05-15 
直接插入排序错误C/C++ codevoid InsertSort2(int a[], int n){if(n2)returnfor(int i1 in i++){int

直接插入排序错误

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

热点排行