Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 排序函数调用后数组未更改_C++_Sorting - Fatal编程技术网

C++ 排序函数调用后数组未更改

C++ 排序函数调用后数组未更改,c++,sorting,C++,Sorting,当使用插入排序的实现对向量进行排序时,作为参数传递的数组不会因此改变 我以前尝试过这个,但找不到我的问题,希望能得到一些帮助 #include <iostream> #include <vector> #include <cstdlib> #include <algorithm> using namespace std; void insertionSort(vector<int> arr); int main() { vect

当使用插入排序的实现对向量进行排序时,作为参数传递的数组不会因此改变

我以前尝试过这个,但找不到我的问题,希望能得到一些帮助

#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;
void insertionSort(vector<int> arr);
int main() {
    vector<int> vec;
    const int arrSize = 5;
    for(int i = 0; i < arrSize; i++) {
        vec.push_back(rand() % 10); // 3 6 7 5 3
    }
    for (auto i : vec) cout << i << endl; // 3 6 7 5 3
    insertionSort(vec);
    for (auto i : vec) cout << i << endl; // 3 6 7 5 3
}

void insertionSort(vector<int> arr) {
    for(int i = 0; i < arr.size() - 1; i++) {
        int j = i + 1;
        while(j > 0 && arr[j - 1] > arr[j]) {
            swap(arr[j - 1], arr[j]);
            j--;
        }
    }
    for (auto i : vec) cout << i << endl; // 3 3 5 6 7
}
#包括
#包括
#包括
#包括
使用名称空间std;
void insertionSort(向量arr);
int main(){
向量向量机;
常数int arrSize=5;
对于(int i=0;ifor(auto i:vec)cout参数是按值复制的,除非传递了引用。若要修改传入的对象,请改用引用

传递一个
向量&arr
,而不仅仅是
向量arr
。注意

另一种方法是返回已排序的数组并将其分配给旧的未排序数组


一些提示:

  • rand
    之前,请调用
    srand
    以使用种子初始化PRNG。从C++11开始,还有
    ,无论如何,您都应该喜欢它

  • std::endl
    刷新流缓冲区。
    '\n'
    不刷新流缓冲区,但具有相同的视觉效果。支持
    '\n'
    ,除非您确实想要刷新流缓冲区。尤其是在循环中,重复刷新是多余和低效的

  • 对STL数据结构使用适当的大小类型。对于
    std::vector
    ,这是
    std::vector::size\u type
    a.k.a.
    std::size\u t
    。与数组相同,顺便说一句。使用
    std::size\u t
    std::vector::size
    也返回
    std::size\u t
    ,而不是
    intde>