C ++向量插入排序算法方法 - 将向量传递给方法

时间:2011-04-18 22:28:48

标签: c++ vector insertion-sort

我到处看,无论我找到什么算法(如果有任何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);

请告诉我,如果您认为该代码没有任何问题,并且您希望我向您展示更多信息,那么应该只是这一点,其他的东西是无关紧要的我认为

感谢

2 个答案:

答案 0 :(得分:8)

您的函数按值接受其参数;这意味着它获得了副本。你对副本进行排序,徒劳无功。

将其更改为参考:

void insertionSort (vector<int>& data, int n) 

答案 1 :(得分:1)

通过引用传递数组,然后函数中的更改将反映在其上

void insertionSort (vector<int> &data, int n) 
{
   ...
}