我创建一个向量并用随机整数填充它。然后我打印出所有未排序的值并调用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 << " ";
}
}
答案 0 :(得分:5)
此
for (i = 1; data.size(); i++)
应该是:
for (i = 1; i<data.size(); ++i)
否则for
永远不会中断。
答案 1 :(得分:3)
你的for循环没有检查中断条件,并且永远循环开始写出界限。
for (i = 1; data.size(); i++)
你应该检查我是否小于矢量的大小。
for (i = 1; i < data.size(); i++)