C++ 选择c+中的排序+;(错误:EXC\u访问错误)

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;

我最近才学会对数组进行选择排序。我还在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;

        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
…谢谢!这非常有用!