尝试选择排序实现时*有时*出现分段错误

Getting segmentation fault *sometimes* from an attempt at a selection sort implementation

我试图自己调试这个,但我想不通! 当 运行 我的代码时,我有时会遇到分段错误,当没有段错误时,它运行得很好并且可以工作。任何指导将不胜感激,谢谢!另外,请记住我是 C++ 的新手。

这是我目前的情况:

#include <iostream>
#include <vector>
using namespace std;

vector<int> selection_sort(vector<int> numbers) {
    int lowest_number_index;
    int lowest_number;
    int starting_size = numbers.size();
    vector<int> sorted_numbers;
    for (int i = 0; i < numbers.size(); ++i) {

        // Find the lowest number
        if (numbers[i] <= lowest_number) {
            lowest_number_index = i;
            lowest_number = numbers[lowest_number_index];
        }

        // Found it! Now let's add it to the other array
        // and remove it from this one.
        if (i == numbers.size() - 1 && numbers.size() != 1) {
            sorted_numbers.push_back(lowest_number);
            numbers.erase(numbers.begin() + lowest_number_index);

            // If we're not done sorting
            if (sorted_numbers.size() != starting_size) {
                lowest_number_index = 0;
                lowest_number = numbers[lowest_number_index];
                // Continue sorting
                i = -1;
                continue;
            }
        } else if (numbers.size() == 1) {
            sorted_numbers.push_back(numbers[i]);
        }
    }

    return sorted_numbers;
}

int main() {
    vector<int> to_sort { 15, 2, 41, 5, 4, 5, 4, 6 };
    to_sort = selection_sort(to_sort);

    cout << "Sorted: ";
    for (auto it = to_sort.begin(); it != to_sort.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
}

函数有未定义的行为,因为使用了未初始化的变量lowest_number

int lowest_number;
     ^^^^^^^^^^^^^
//...
for (int i = 0; i < numbers.size(); ++i) {

    // Find the lowest number
    if (numbers[i] <= lowest_number) {
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

考虑到变量 lowest_number_index 也未初始化。

int lowest_number_index;