我有以下代码..该方法应该可以工作,但是我将向量传递给函数时遇到了麻烦。我四处搜索,发现矢量可以作为'参考'或者'值'我试过了两个,但他们似乎没有工作。我是否错误地调用了方法或以错误的方式传递了向量?无论哪种方式,我该怎么做才能解决这个问题?谢谢! :)
//insertion sort method
#include <iostream>
#include <vector>
using namespace std;
void insertionSort(int arr[], int n){
for(int i = 0; i < n; i++){
int temp = arr[i]; // element adjacent to left sorted array
int j = i - 1;
while(temp > arr[j] && j != 0){
arr[j] = arr[j - 1];
j--;
}
arr[j] = temp;
}
}
int main(){
int n, temp;
cin >> n;
vector <int> arr;
for(int i = 0; i < n; i++){
cin >> temp;
arr.push_back(temp);
}
insertionSort(arr, n);
for(int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
答案 0 :(得分:1)
insertSort(int arr [],int n)方法的第一个参数是错误的。 您还错误地处理了arr。在第一次迭代时,int j = 0 - 1 = -1;这是出乎意料/出界的。
请试试这个:
void insertionSort(vector <int> &arr, int n){
int i, j, temp;
for (i = 1; i < n; i++)
{
temp = arr[i];
j = i - 1;
while ((j >= 0) && (temp<arr[j]))
{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = temp;
}
}
谢谢!!!