我想要一个函数来更改数组quicksort的2个数字

时间:2019-10-25 18:39:09

标签: c++ arrays declaration

我正在研究一个使用快速排序算法的小型程序。 不幸的是,我的交换功能无法正常工作。 我只想将array [i]与array [j]交换,但是它说a和b没有声明。

void swap(int data[a], data[b]) {

      int temp = data[a];
      data[a] = data[b];
      data[b] = temp;


      return data[a], data[b];
}

1 个答案:

答案 0 :(得分:1)

您的代码中有几个问题...

首先,您要交换两个整数(在数组中)的值,因此该函数正在int上运行。此外,您还想修改参数,因此您应该使用引用(没有指针,因为传递空指针对于swap没有意义)。

接下来,您在函数中有一个return语句,该语句被声明为不返回任何内容(void返回类型)。还有这个

return data[a], data[b];

除了声明为void的错误数据类型和函数之外,它没有达到您的期望。逗号运算符计算两个操作数,结果是右侧的操作数。无论如何,这实际上并不重要,因为您无需返回任何内容(而是修改了参数)。

修复我们拥有的那些东西

void swap(int& a,int& b) {    
      int temp = a;
      a = b;
      b = temp;
}

但是,您实际上不应该编写此代码。 <utility>中有std::swap,已经可以满足您的要求。

PS :将c样式的数组传递给函数是完全不同的故事。您无需将数组传递给函数即可仅修改其两个元素。无论如何,您可能应该使用std::vector,因为它更容易使用。