c ++交换数组的内容 - 选择排序

c++ swapping content of array - Selection Sort

我是 C++ 新手。我试图通过以下方式编写一个用于选择排序的函数。

void selection_sort(int* m[], int array_size) {
    for (int i = 0; i < array_size; i++) 
      int min_ind = i;
      for (int j = i+1; j < array_size; j++){
        if (m[min_ind] > m[j]){
            min_ind = j;
        }
      }
      int temp = *m[i];
      *m[i] = *m[min_ind];
      *m[min_ind] = temp;
    }
  }

在 main 中,数组定义为:

int *sel_nums = new int[n];

我在 main 中调用选择排序:

selection_sort( &sel_nums, x );

我不断收到一条错误消息:

Segmentation fault (core dumped)

有没有人对这种情况持续发生的原因有任何意见?

您动态分配了类型为 int 的对象数组。

int *sel_nums = new int[n];

您要将此数组传递给函数 selection_sort。所以函数声明会看 ;east like

void selection_sort( int m[], int array_size ); 

编译器将数组类型的参数隐式调整为指向数组元素类型的指针。即上面的声明等同于

void selection_sort( int *m, int array_size ); 

所以函数可以这样调用

selection_sort( sel_nums, n );

要在您可以编写的函数内交换数组的两个元素

  if ( min_ind != i )
  {
      int temp = m[i];
      m[i] = m[min_ind];
      m[min_ind] = temp;
  }

或者您可以使用标准 C++ 函数std::swap,例如

#include <utility>

//...

if ( min_ind != i )
{
    std::swap( m[i], m[min_ind] );
}