Ordenação Binária

1. Ordenação Binária

Enzo de Brito Ferber
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


  


2. Consegui

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 14/04/2008 - 18:33h

#include <stdio.h>
#include <stdlib.h>

static int *matrix;
static int *nmatrix;
static int matrix_size;
static int matrix_pos;

void bin_order (int low, int high)
{
int mid = (low + high) / 2;

nmatrix[matrix_pos] = matrix[mid];
matrix_pos++;
if (low >= high) return ;

bin_order (low, mid - 1);
bin_order (mid + 1, high);

}

int main (void)
{
register int i;

matrix_size = 7;
matrix_pos = 0;

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);
printf("%d ", matrix[i]);
}
puts("");
bin_order (0, matrix_size - 1);
for (i = 0; i < matrix_size; i++) printf("%d ", nmatrix[i]);

if (getch()) return 0;
}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts