我是 C++ 的新手,我想做的是将 insertion_sort 函数的输出传递给主函数。这是我的代码
#include "include.h"
using namespace std;
int main()
{
int arr[10] = {12,9,32,1,0,5,13,7,4,2};
for (int i = 0; i < 10 ; ++i)
{
cout << insertion_sort(arr[i]) << endl;
}
return EXIT_SUCCESS;
}
int* insertion_sort(int* arr){
int key, temp =0;
for (int i = 0; i < 10; ++i)
{
key = i+1;
while(key >= 0){
if (arr[key] < arr[key -1])
{
temp = arr[key -1];
arr[key -1] = arr[key];
arr[key] = temp;
}
key--;
}
}
return arr;
}
我得到的是
candidate function not viable: no known conversion from 'int' to 'int *' for 1st argument; take the
address of the argument with &
int* insertion_sort(int* arr);
插入排序算法在这里并不重要。我只是不明白为什么没有将数组指针传递给函数。
最佳答案
这里发生了很多事情:
arr[i] 是一个整数(int 类型)。 您应该传递类型为 int* 的 arr。
您的 insertion_sort 函数似乎正在适本地修改输入数组,因此您不需要返回值。
此外,您不应调用插入排序 10 次。 调用 insertion_sort,然后使用 for 循环打印排序后的数组。
没有太多改变:
#include <iostream>
using namespace std;
void insertion_sort(int* arr){
int key, temp =0;
for (int i = 0; i < 10; ++i)
{
key = i+1;
while(key >= 0){
if (arr[key] < arr[key -1])
{
temp = arr[key -1];
arr[key -1] = arr[key];
arr[key] = temp;
}
key--;
}
}
}
int main()
{
int arr[10] = {12,9,32,1,0,5,13,7,4,2};
insertion_sort(arr);
for (int i = 0; i < 10 ; i++)
{
cout << arr[i] << endl;
}
return 0;
}
关于c++ - 在 C++ 中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475527/