0
我是編程新手。我最近剛開始學習算法。 我的代碼應該執行合併排序過程,但它有一些錯誤,雖然它構建正確。 我的代碼需要輸入,然後停止工作。 它顯示這樣的錯誤:我的合併排序代碼有什麼問題,我找不出來了?
#include<iostream>
using namespace std;
#define size 10
class mergesort {
public:
mergesort(){}
void merge(int a[]) {
int mid = 5;
if (size < 2) return;
int left[size]; int right[size];
for (int i = 0; i < mid; i++) {
left[i] = a[i];
}
for (int j = mid; j < size-1; j++) {
right[j-mid] = a[j];
}
merge(left);
merge(right);
sort(left, right, a, mid, size-mid);
}
void sort(int left[], int right[], int a[], int L, int R) {
int i = 0; int j = 0; int k = 0;
while (i < L && j < R) {
if (left[i] <= right[j])
{
a[k] = left[i];
k++; i++;
}
else if (right[j] < left[i]) {
a[k] = right[j];
k++; j++;
}
}
while (i < L) {
a[k] = left[i];
k++; i++;
}
while (i < R) {
a[k] = right[j];
k++; j++;
}
}
};
void main() {
mergesort m;
int a[size];
cout << "Enter the elements:" << endl;
for (int i = 0; i < size; i++) {
cin >> a[size];
}
m.merge(a);
}
元兇是'cin >> a [size];'應該是'cin >> a [i];' –
'int left [size]; int right [size];'這是無效的C++。數組大小必須是編譯時表達式,而不是變量。 – PaulMcKenzie
@PaulMcKenzie'#define size 10' – Borgleader