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

Tan*_*rty 2 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;
 }
Run Code Online (Sandbox Code Playgroud)

代码的重要部分

        cout << "insertion sort" << endl;
        system("pause");
        insertionSort(numberVectors, i);
Run Code Online (Sandbox Code Playgroud)

让我知道,如果你不认为那些代码有什么问题,你想让我告诉你更多,应该只是这一点,其他的东西是无关紧要的,我认为

谢谢

GMa*_*ckG 8

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

改为将其更改为参考:

void insertionSort (vector<int>& data, int n) 
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果`n`只是`data`中的元素数,那么你甚至不需要它,因为你可以调用`data.size()`来找出有多少元素. (2认同)