矢量数组 - 排序失败

时间:2015-05-18 00:22:13

标签: c++ arrays sorting vector

排序数组时遇到问题。我不知道为什么我的代码没有正确排序数组。我是编程新手,所以对我很温柔。这是一个代码。合并或快速排序等其他功能也不起作用。在此先感谢您的回答。

    #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");
}

1 个答案:

答案 0 :(得分:1)

您似乎无意中在循环中递增i。请勿使用++i,而是使用i+1。同时将您的循环终止条件更改为i < Array.size()而不是i < Array.size() - 1