[英]C++ Insertion Sort crashing
我创建一个向量,并用随机整数填充它。 然后,我打印出所有未排序的值并调用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 << " ";
}
}
这个
for (i = 1; data.size(); i++)
应该:
for (i = 1; i<data.size(); ++i)
否则, for
永不中断。
您的for循环不检查中断条件,并且永远循环开始写越界。
for (i = 1; data.size(); i++)
您应该检查我是否小于向量的大小。
for (i = 1; i < data.size(); i++)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.