-2
我想写一个算法,按升序(插入排序)对列表中的元素进行排序。通过将所有以下变量(和数组)定义为int来启动主函数。 这里是排序功能:插入排序中的分段错误在C排序
void sort(int a, int b , int list[], int i)
{
for(i=1; i<(b); i++)
{
while(list[i-1]>list[i])
{
a = list[i-1];
list[i-1]=list[i];
list[i]=a;
i--;
}
}
}
b为列表中的元素的数量,以及在主被初始化为0。
当在主函数中使用正整数表进行排序时,它会按照所需的方式对它们进行排序。但是,如果某些值为负数,程序会产生分段错误。
有人能帮我弄清楚错误吗?谢谢!
分段错误几乎肯定意味着您正在访问不属于您的内存。研究你的内在循环。你是否发现任何可以通过小于0的索引来访问'list'的方式? –
在使用'i'作为循环增量的for循环中改变'i'的值通常是一个坏主意。当你在while循环中第一次递减时,它变为0,然后你试图访问'list [-1]' – bruceg
@bruceg可疑(我在编写解析器跳过字符时做了很多),但是在这个情况当然是。 – YoYoYonnY