ayuda MERGESORT C++ por invitacion Gmail

[email protected]***
31 de Mayo del 2005
Estoy aprendiendo a manejar el algoritmo de ordenamiento MERGESORT pero tengo un problema... el ordena un array entero pero siempre el valor mayor del array lo cambia por un 10 y no he dado con la solucion!
ayuden a este aprendiz de programador pronto...
[email protected] [email protected]


(Utilice Borland C++)

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>

void mergesort(int lo, int hi, int a[]);


int Lista[10], i, Tama=10;

void imprimir(int lista[], int TAM);
void merge(int lo, int m, int hi, int a[]);

void main(){
cout<<" introduce datos"<<endl;
for(i=0;i<Tama;i++){
cout<<" Lista["<<(i+1)<<"]="; cin>>Lista[i];
}//for
mergesort(0,Tama,Lista);
imprimir(Lista, Tama);
cout<<"Hasta luego...."<<endl;
char c=getchar();
}//main

void imprimir(int lista[], int TAM){
cout<<" La lista quedo ordenado de la siguiente forma:"<<endl;
for(int i=0;i<TAM;i++){
cout<<" Lista["<<(i+1)<<"]:"<<lista[i]<<endl;
}//for
}//imprimir

void mergesort(int lo, int hi, int a[]){
if(lo<hi){
int m=(lo+hi)/2;
mergesort(lo, m,a);
mergesort(m+1, hi,a);
merge(lo, m, hi,a);
}//if
}//mergesort

void merge(int lo, int m, int hi, int a[]){
int i, j, k, b[10];
for (i=lo; i<=hi; i++)
b[i]=a[i];
i=lo; j=m+1; k=lo;
while (i<=m && j<=hi){
if (b[i]<=b[j])
a[k++]=b[i++];
else
a[k++]=b[j++];
}//while
while (i<=m)
a[k++]=b[i++];
}//merge