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++

按照评论中的建议尝试使用调试器。