-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