[英]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.