我看到无处不在,无论我找到什么算法(如果有任何lol)在c ++中的向量上进行插入排序,它都不会工作,所以我假设它与我的代码有关.任何人都可以帮我找到一种方法,我可以将一个向量作为参数传递给一个方法,然后对它进行插入排序吗?此刻它等待几秒钟并显示未分类的所有值:(
插入排序代码
void insertionSort (vector<int> data, int n)
{
int i, j, tmp;
for (i=1; i<n; i++)
{
j=i;
tmp=data[i];
while (j>0 && tmp<data[j-1])
{
data[j]=data[j-1];
j--;
}
data[j]=tmp;
}
Run Code Online (Sandbox Code Playgroud)
代码的重要部分
cout << "insertion sort" << endl;
system("pause");
insertionSort(numberVectors, i);
Run Code Online (Sandbox Code Playgroud)
让我知道,如果你不认为那些代码有什么问题,你想让我告诉你更多,应该只是这一点,其他的东西是无关紧要的,我认为
谢谢
即时通讯这真的很烦人的错误信息.我知道我只是新手,但这似乎是我能想到的事情.任何人都可以告诉我哪里出错了吗?
运行时的消息是: Debug Assertion Failed!程序:....文件:c:\ program files\microsoft visual studio 10.0\vc\include\vector行:932表达式:向量下标超出范围
而代码是
#include "VectorIntStorage.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void VectorIntStorage::Read(istream& r)
{
char c[13];
r >> c;
r >> NumberOfInts; //gets number of ints for vector
//numberVector = new std::vector<int> numberVector;
for(int i = 0; i < NumberOfInts; i++)
{
r >> numberVector[i];
cout << numberVector[i] << endl;
if(_sortRead) //true
{
for(int k = 0; k < i; k++)
{
if(numberVector[i] < …Run Code Online (Sandbox Code Playgroud)