我创建了一个向量,并用随机整数填充它。然后,我打印出所有未排序的值并调用insertionSort()。在此调用之后,应按排序顺序打印数字。我的程序总是崩溃,我不知道为什么。
下面是我的代码:
#include <cstdlib>
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
int listSize;
vector<int> intList()
{
cout << "How many numbers do you want to sort?\n";
cin >> listSize;
vector<int> list;
for (int i = 0; i < listSize; i++)
{
int random = rand() % 10001;
list.push_back(random);
}
return list;
};
void insertionSort(vector<int>& data)
{
int i, j, tmp;
for (i = 1; data.size(); i++)
{
j = i;
tmp = data[i];
while (j > 0 && tmp < data[j-1])
{
data[j] = data[j-1];
j--;
}
data[j] = tmp;
}
}
int main(int argc, char** argv)
{
srand(time(0));
vector<int> list = intList();
for (vector<int>::iterator it = list.begin(); it != list.end(); it++)
{
cout << *it << " ";
}
cout << "\n";
insertionSort(list);
for (vector<int>::iterator it = list.begin(); it != list.end(); it++)
{
cout << *it << " ";
}
}发布于 2014-11-19 05:25:11
这
for (i = 1; data.size(); i++)应该是:
for (i = 1; i<data.size(); ++i)否则,for永远不会中断。
发布于 2014-11-19 05:26:06
你的for循环不检查中断条件,并且循环总是开始写出边界。
for (i = 1; data.size(); i++)您应该检查i是否小于向量的大小。
for (i = 1; i < data.size(); i++)https://stackoverflow.com/questions/27004321
复制相似问题