【发布时间】:2019-07-07 18:52:41
【问题描述】:
在这段代码中,当我在 while 循环中将 i+1 替换为 j+1 时,会出现分段错误。我不明白为什么,因为这些值 两个变量是相同的。
此代码 sn-p 用于查找对由连续整数组成的无序数组按升序排序所需的最小交换次数。
int minimumSwaps(int n, int* a) {
int i=0,j=0,temp=0,swap=0;
for(i=0;i<n-1;i++)
{
if(i+1!=a[i])
{
j=i;
while(a[j]!=i+1)
{
j++;
}
temp=a[i];
a[i]=a[j];
a[j]=temp;
swap++;
}
else
{
continue;
}
}
return swap;
}
【问题讨论】:
-
你说的是哪个 i+1 替换代码中有两个?也许你可以说得更清楚。
-
数组是否总是包含数字 1 ?你能告诉我们你是如何调用这个函数的吗?
-
引用:“当我在 while 循环中将 i+1 替换为 j+1 时,会出现分段错误。我不明白为什么,因为两个变量的值是相同的。”你这是什么意思?变量
i和j不相同! -
还有...为什么要用
j+1替换i+1?这毫无意义...您正在搜索值为i+1的元素,那么为什么要替换为j+1 -
@Siddharth-Soni while 循环中的第二个
标签: c arrays data-structures segmentation-fault