SelectionSorting in c++ (Error : EXC_BAD_ACCESS)
SelectionSorting in c++ (Error : EXC_BAD_ACCESS)
我最近刚刚学会了对数组进行选择排序。我还在 mac 上使用 X-Code。
我以为我做的一切都正确,但我似乎一直在 if 语句中收到此错误消息:
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x7fff5fc00000)。
我做错了什么?
using namespace std;
void selectionSorting(int array[], int n)
{
for(int i = 0; i < n-1; n++)
{
int min = i;
for(int j = i + 1; j < n; j++)
{
if(array[j] < array[min]) //Thread 1: EXC_BAD_ACCESS(code=1, address=0x7fff5fc00000)
min = j;
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
int main()
{
int n = 10;
int array[]= {10,9,8,7,6,5,4,3,2,1};
selectionSorting(array, n);
for(int x=0; x < n; x++)
{
cout << array[x] << " ";
}
return 0;
}
您在 for(int i = 0; i < n-1; n++)
处有一个逻辑错误。它应该是for(int i = 0; i < n-1; i++)
(遍历数组的元素)。
另外 EXC_BAD_ACCESS 表明您正在尝试访问一块无法再访问的内存,或者它不符合预期用途。
看到这发生在 if(array[j] < array[min])
,这很明显,因为 j 超出了数组长度,就像您所做的那样 n++
。
按照评论中的建议尝试使用调试器。
我最近刚刚学会了对数组进行选择排序。我还在 mac 上使用 X-Code。 我以为我做的一切都正确,但我似乎一直在 if 语句中收到此错误消息:
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x7fff5fc00000)。
我做错了什么?
using namespace std;
void selectionSorting(int array[], int n)
{
for(int i = 0; i < n-1; n++)
{
int min = i;
for(int j = i + 1; j < n; j++)
{
if(array[j] < array[min]) //Thread 1: EXC_BAD_ACCESS(code=1, address=0x7fff5fc00000)
min = j;
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
int main()
{
int n = 10;
int array[]= {10,9,8,7,6,5,4,3,2,1};
selectionSorting(array, n);
for(int x=0; x < n; x++)
{
cout << array[x] << " ";
}
return 0;
}
您在 for(int i = 0; i < n-1; n++)
处有一个逻辑错误。它应该是for(int i = 0; i < n-1; i++)
(遍历数组的元素)。
另外 EXC_BAD_ACCESS 表明您正在尝试访问一块无法再访问的内存,或者它不符合预期用途。
看到这发生在 if(array[j] < array[min])
,这很明显,因为 j 超出了数组长度,就像您所做的那样 n++
。
按照评论中的建议尝试使用调试器。