#include<iostream>
using namespace std;
void merge(int *lArray, int nL, int *rArray, int nR, int *Array){
int i,j,k;
i=0; j=0; k=0;
//i,j,k are pointers for lArray, rArray & Array
// nL & nR are numbr of elements in lArray & rArray respectively
while(i<nL && j<nR)
{
if(lArray[i] <= rArray[j])
Array[k++] = lArray[i++];
else
Array[k++] = rArray[j++];
}
while(i<nL)
Array[k++] = lArray[i++];
while(i<nR)
Array[k++] = rArray[j++];
return;
}
void mergesort(int *Array, int n)
{
if (n<2)
return;
int mid = n/2;
int lArray[mid];
int rArray[n-mid];
for (int i=0;i<mid;i++)
lArray[i] = Array[i];
for (int i=mid;i<n;i++)
rArray[i-mid] = Array[i];
mergesort(lArray, mid);
mergesort(rArray,n-mid);
merge(lArray,mid,rArray,n-mid,Array);
delete(lArray);
delete(rArray);
}
int main()
{
int Array[10];
int n = 10;
cout<< "Enter Values :" << " ";
for(int i=0; i<10; i++)
cin>>Array[i];
mergesort(Array,n);
for(int i=0; i<n; i++)
cout<<Array[i]<< " ";
return 0;
}
它是一個簡單的合併排序程序,但我無法找出我出錯的地方。 運行代碼後,我能夠輸入數組的輸入,但進入mergesort函數後控制檯剛剛崩潰。 我在64位Windows 8.1上使用CodeBlocks。爲什麼在給出數組的輸入並輸入mergesort函數後出現運行時錯誤?
控制檯剛剛崩潰 - 程序突然結束了嗎?沒有錯誤? – Litty
請將您的代碼縮進一致,硬編碼破壞排序算法的值並提供精確的錯誤信息。 –