现在的位置: 首页 > 综合 > 正文

用数组实现直接插入排序的过程中数组下标越界的问题

2013年12月08日 ⁄ 综合 ⁄ 共 319字 ⁄ 字号 评论关闭
void sort1(int tmp[],int len){
    int record;
    int j;
 for(int i=1;i<len;i++){
    if(tmp[i]<tmp[i-1]){
     record=tmp[i];
     tmp[i]=tmp[i-1];
     if(i==1){
       tmp[0]=record;
     }else{
        for(j=i-2;record<tmp[j];--j)
        tmp[j+1]=tmp[j];
        tmp[j+1]=record;
     }
    }
 }
   for(int j=0;j<len;j++){
    printf("%d\n",tmp[j]);
   }

}

代码如上所示, 可以在外层循环里面加一个if判断语句, 如果当前有序序列只有一个元素,且新加入的元素是倒序的, 相当于直接将这两个元素交换。

抱歉!评论已关闭.