ayudaC++
Publicado por Dark4N63L (1 intervención) el 30/05/2005 05:31:10
soy de venezuela y estudio 3er semestre de ing en sistemas... 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
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
Valora esta pregunta


0