向量数组排序失败

vector array - sorting failure

本文关键字:失败 数组排序 向量      更新时间:2023-10-16

我对数组排序有问题。我不知道为什么我的代码不能正确排序数组。我是编程新手,所以请对我温柔一点。这里有个密码。此外,其他功能,如合并或快速排序也不起作用。提前感谢您的回答。

    #include <iostream>
    #include <cstdlib>
    #include <vector>
    #include <algorithm>
    #include <iterator>
std::vector<int> bubbleSort(std::vector<int>& Array)
{
for (unsigned int j = 1; j < Array.size() - 1; ++j)
{
    for (unsigned int i = 0; i < Array.size() - 1; i++)
    {
        if (Array[i] > Array[++i])
        {
            std::swap(Array[i], Array[++i]);
        }
    }
}
return Array;
}

int main()
{
for (int i = 0; i < 10;i++)
{
int N;  //array size
srand(std::time(NULL));
std::cout << " array size: ";
std::cin >> N;
std::vector <int> Array;
 //fill array
for (int i = 1; i <= N; i++)
    Array.push_back(i);
for (int i = N - 1; i > 0; i--)
{
    int j = rand() % i;
    std::swap(Array[i], Array[j]);
  }
bubbleSort(Array);
for (unsigned int i = 0; i < Array.size(); i++)
    {
    std::cout << Array.at(i) << std::endl;
    }
  }
system("pause");
}

看起来您无意中在循环中增加了i。不要用++i,用i+1代替。同时将循环终止条件更改为i < Array.size()而不是i < Array.size() - 1