大家帮我看看这个合并排序有什么问题?谢谢啦!~
#include <iostream>
using namespace std;
void merge(int array[], int p, int q, int r);
void mergesort(int array[], int start, int end);
void show_array(int array[]);
int main()
{
int array[10] = {0};
cout << "please type into many numbers: " << endl;
for(int i = 0; i < 10; i++)
{
cin >> array[i];
}
int start = 0;
int end = 9;
mergesort(array, start, end);
show_array(array);
return 0;
}
void mergesort(int array[], int start, int end)
{
if(start < end)
{
int mid;
mid = (start + end) / 2;
mergesort(array, start, mid);
mergesort(array, mid + 1, end);
merge(array, start, mid, end);
}
}
void merge(int array[], int p, int q, int r)
{
int temp1[5];
int temp2[5];
for(int i = 0; i < 5; i++)
{
temp1[1] = array[i];
}
for(int i = 5 ; i < 10; i++)
{
int j = 0;
temp2[j] = array[i];
j++;
}
int i = 0;
int j = 0;
int k = 0;
while(p <= q && (q + 1) <= r)
{
if(temp1[i] <= temp2[j])
{
array[k++] = temp1[i++];
}
else
{
array[k++] = temp2[j++];
}
}
while(p <= q)
{
array[k++] = temp1[i++];
}
while ((q + 1) <= r)
{
array[k++] = temp2[j++];
}
}
void show_array(int array[])
{
for (int i = 0;i < 10; i++)
{
cout << array[i] << "\t";
}
}