我到处看,无论我找到什么算法(如果有任何lol)在c ++中的矢量上进行插入排序,它都不会工作,因此我假设它与我的代码有关。任何人都可以帮我找到一种方法,我可以将一个向量作为参数传递给一个方法,然后对它进行插入排序吗?此刻它等待几秒钟并显示未分类的所有值:(
插入排序代码
void insertionSort (vector<int> data, int n)
{
int i, j, tmp;
for (i=1; i<n; i++)
{
j=i;
tmp=data[i];
while (j>0 && tmp<data[j-1])
{
data[j]=data[j-1];
j--;
}
data[j]=tmp;
}
代码的重要部分
cout << "insertion sort" << endl;
system("pause");
insertionSort(numberVectors, i);
请告诉我,如果您认为该代码没有任何问题,并且您希望我向您展示更多信息,那么应该只是这一点,其他的东西是无关紧要的我认为
感谢
答案 0 :(得分:8)
您的函数按值接受其参数;这意味着它获得了副本。你对副本进行排序,徒劳无功。
将其更改为参考:
void insertionSort (vector<int>& data, int n)
答案 1 :(得分:1)
通过引用传递数组,然后函数中的更改将反映在其上
void insertionSort (vector<int> &data, int n)
{
...
}