这是我写的快速排序的算法,为什么编译时出错并提示“swap函数应输入两个参数,却提供了3个”啊

求助!这是我写的快速排序的算法,为什么编译时出错并提示“swap函数应输入两个参数,却提供了3个”啊~~谢谢大家啦!

#include
using namespace std;

inline int findpivot(int arr[],int i,int j){
return (i+j)/2;
}

inline int partition(int arr[],int l,int r,int pivot){
do{
while(arr[++l]>pivot);
while((larr[--r]));
swap(arr,l,r);
}while(l<r);
return l;
}

inline void swap(int arr[],int i,int j){
int t;
t=arr[i];
arr[i]=arr[j];
arr[j]=arr[i];
}

void qsort(int arr[],int i,int j){
if(j<=i)
return;
int pivotindex =findpivot(arr,i,j);
swap(arr,pivotindex,j);
int k=partition(arr,i-1,j,arr[j]);
swap(arr,k,j);
qsort(arr,i,k-1);
qsort(arr,k+1,j);
}

int main(){
int a[10];
for(int i=0;i cin>>a[i];
qsort(a,0,9);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
}

错误信息如下:
1>------ 已启动生成: 项目: test1_4, 配置: Debug Win32 ------
1>生成启动时间为 2015/5/13 18:03:47。
1>InitializeBuildStatus:
1> 正在对“Debug\test1_4.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> test_4.cpp
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_iostream<_Elem,_Traits> &,std::basic_iostream<_Elem,_Traits> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(970) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_istream<_Elem,_Traits> &,std::basic_istream<_Elem,_Traits> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(865) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_ostream<_Elem,_Traits> &,std::basic_ostream<_Elem,_Traits> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(609) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_string<_Elem,_Traits,_Alloc> &&,std::basic_string<_Elem,_Traits,_Alloc> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\xstring(2056) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_string<_Elem,_Traits,_Alloc> &,std::basic_string<_Elem,_Traits,_Alloc> &&)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\xstring(2047) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::basic_string<_Elem,_Traits,_Alloc> &,std::basic_string<_Elem,_Traits,_Alloc> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\xstring(2038) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::pair<_Ty1,_Ty2> &&,std::pair<_Ty1,_Ty2> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(294) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::pair<_Ty1,_Ty2> &,std::pair<_Ty1,_Ty2> &&)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(286) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(std::pair<_Ty1,_Ty2> &,std::pair<_Ty1,_Ty2> &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(279) : 参见“std::swap”的声明
1>e:\vs2010\exercise\test1_4\test1_4\test_4.cpp(12): error C2780: “void std::swap(_Ty &,_Ty &)”: 应输入 2 个参数,却提供了 3 个
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(100) : 参见“std::swap”的声明
1>
1>生成失败。
1>
1>已用时间 00:00:00.64
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

2个回答

swap 的定义或声明,都在调用之后,竟然没有报 swap 未定义的错误。说明,系统可能有同名的函数,且只有两个 参数。
所以,你最好是将你定义的 swap 函数改个名试试。

kiaralovelysheep
cheerlyCherry 好的我试试,谢谢啦
大约 5 年之前 回复
91program
91program 回复XL-LOVE: 你最好能调试一下,看看是哪一步没有达到你想要的效果。
大约 5 年之前 回复
kiaralovelysheep
cheerlyCherry 好的谢谢啦,把swap函数声明放到前面就没有错了,但是输入一组数得出的排序是错的,能帮我看看算法哪里错了么?想了好久想不出啊,唉。。。
大约 5 年之前 回复
91program
91program std::swap 就是 std 提供的 swap 函数,详细 看看错误信息也能得到这样的结论的。
大约 5 年之前 回复

和系统的冲突了,要使用的函数放到使用地方前面

kiaralovelysheep
cheerlyCherry 谢谢啦,是这样的,我忽略了这个。。。
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问