C++ 选择c+中的排序+;(错误:EXC\u访问错误)
我最近才学会对数组进行选择排序。我还在mac电脑上使用X代码。 我认为我做的每件事都是正确的,但我似乎一直在if语句中收到以下错误消息: 线程1:EXC\u错误访问(代码=1,地址=0x7fff5fc00000) 我做错了什么C++ 选择c+中的排序+;(错误:EXC\u访问错误),c++,sorting,selection-sort,C++,Sorting,Selection Sort,我最近才学会对数组进行选择排序。我还在mac电脑上使用X代码。 我认为我做的每件事都是正确的,但我似乎一直在if语句中收到以下错误消息: 线程1:EXC\u错误访问(代码=1,地址=0x7fff5fc00000) 我做错了什么 using namespace std; void selectionSorting(int array[], int n) { for(int i = 0; i < n-1; n++) { int min = i;
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;
}
使用名称空间std;
无效选择排序(整数数组[],整数n)
{
对于(int i=0;i 您可能在处有一个逻辑错误(int i=0;i
。它应该是for(int i=0;i
(遍历数组的元素)
此外,EXC_BAD_ACCESS表示您正在尝试访问一段不再可访问的内存,或者该内存与预期用途不符
请注意,这发生在if(array[j]
处,这是很明显的,因为j超出了数组长度,正如您所做的n++
按照注释中的建议,尝试使用调试器。这里有一个打字错误:
for(…n++)
。使用调试器可以很容易地发现此类错误,因此我建议您学习使用调试器。n是一个常量,因此常量声明可能会发现这一点。旁注:选择排序是一种效率相当低的算法,它对于学习编程来说很好,但几乎在其他任何地方都没有什么价值……请记住,一般来说,您应该不会有问题使用std::sort
…谢谢!这非常有用!