
EnzoFerber
(usa FreeBSD)
Enviado em 14/04/2008 - 18:09h
Galera,
To tentando fazer um algoritmo pra ordenar uma string em ordem binaria (como se eu estivesse mandando imprimir uma arvore binaria como preordenada - raiz, esquerda, direita)
Só que não consigo mais ver onde tá meu erro no codigo... Alguem ai pode me ajudar?
#include <stdio.h>
#include <stdlib.h>
static int *matrix;
static int *nmatrix;
static int matrix_size;
void bin_order (int low, int high, int matrix_pos)
{
int mid = (low + high) / 2;
if (low >= high) {
nmatrix[matrix_pos] = matrix[mid];
return ;
}
bin_order (low, mid - 1, matrix_pos + 1);
bin_order (mid + 1, high, matrix_pos + 1);
nmatrix[matrix_pos] = matrix[mid];
}
int main (void)
{
register int i;
matrix_size = 3;
matrix = (int *) malloc (matrix_size * sizeof (int));
nmatrix = (int *) malloc (matrix_size * sizeof (int));
if ( (!matrix) || (!nmatrix))
{
perror("malloc()");
return 0;
}
for (i = 0; i < matrix_size; i++) matrix[i] = (i + 1);
bin_order (0, matrix_size - 0, 0);
for (i = 0; i < matrix_size; i++) printf("%d ", nmatrix[i]);
if (getch()) return 0;
}
[]'s