【发布时间】:2014-02-15 11:09:05
【问题描述】:
我有以下代码用于快速排序。 当我编译代码时,它显示以下错误:
错误 C2065:“向量”:未声明的标识符
错误 C2062:int 类型:意外
错误 C3861:“快速排序”:找不到标识符
#include "iostream"
#include "conio.h"
#include "vector"
void quicksort(vector<int>,int,int);
int partition(vector<int>,int,int);
using namespace std;
int main()
{ vector<int> unsorted;
int n,x,y;
//cout<<"Initial size: "<<unsorted.size()<<"\n Capacity: "<<unsorted.capacity();
cout<<"Enter the size: ";
cin>>n;
cout<<"Enter the elements in unsorted array: "<<endl;
for(int a=0;a<n;a++)
{
cin>>x;
unsorted.push_back(x);
}
for(int b=0;b<n;b++)
{
cout<<unsorted[b]<<"\t";
}
x=1;
y=n;
quicksort(unsorted,x,y); //quicksort(array,1,array.length)
for(int m=0;m<n;m++)
{
cout<<unsorted[m]<<"\t";
}
return 0;
}
int partition(vector<int> given,int p,int r)
{
int pivot,i,j;
pivot=given[r];
i=p-1;
for(j=p;j<r-1;j++)
{
if(given[j]<pivot)
i++;
swap(given[i],given[j]);
}
swap(given[i+1],given[r]);
return i+1;
}
void quicksort(vector<int> given,int p,int r)
{ int q;
if(p<r)
q= partition(given,p,r);
quicksort(given,p,q-1);
quicksort(given,q+1,r);
}
【问题讨论】:
-
括号,不是引号:
#include <iostream>和#include <vector>。 -
适当的缩进/格式会很好。
-
这并不能解决问题。
-
并把函数声明放在
using namespace std;后面 -
另外,您的快速排序函数不会修改传入的向量,而是修改它的副本,因此您可能希望通过引用传递它。
标签: c++ visual-c++-2010