我到处寻找,无论我在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);让我知道,如果你不认为有任何错误的代码,你想让我向你展示更多,应该只是这一点,其他东西是无关的,我认为
谢谢
发布于 2011-04-19 06:32:17
您的函数通过值接受其参数;这意味着它将获得一个副本。你对副本进行排序,但这是徒劳的。
改为引用:
void insertionSort (vector<int>& data, int n) 发布于 2011-04-19 06:32:52
通过引用传递数组,函数中的更改将反映在该数组上
void insertionSort (vector<int> &data, int n)
{
...
}https://stackoverflow.com/questions/5709637
复制相似问题