我是C++的新手,我要做的就是将insertion_sort函数的输出传递给main函数。这是我的代码
#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);插入排序算法在这里并不重要。我就是不明白为什么数组指针没有被传递给函数。
发布于 2014-10-21 05:54:04
这里发生了很多事情:
arri是一个整数(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;
}发布于 2014-10-21 06:01:26
我将继续回答你的问题,我会让你自己解决剩下的问题。
您的函数签名是 int * arr( int * arr),这意味着它期望一个指向一个整数的指针,并将返回一个指向一个整数的指针。
但是,您向它传递的是arri,这是一个整数,而不是指向整数的指针。
试试&arri。
编码愉快!:)
https://stackoverflow.com/questions/26475527
复制相似问题