Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 01-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Sí, eso ya lo hice y funciona pero la idea era hacerlo de otra forma como sigue. Imagina un arreglo con 1 millón de elementos a insertar en orden, con tu método tienes que leer todo cada vez hasta encontrar su posición y eso cuantos más elementos más tardará.
Mi idea es esta
Si tengo ya los elementos:
1,2,5,6,7,10,15,20
Quiero insertar 9.
La posición inicial será la última con lo que en primer lugar lo comparo con el 20.
Como es menor divido el índice entre 2 para comparar con el del medio que en este caso sería el 6.
Como 9 es mayor que 6 la idea es coger el rango entre la posición actual y la última y comparar con el del centro. En este caso sería con el valor 10 y como 9 es menor coger el rango entre el valor 6 y el 10 y divido entre 2 y esta vez comparará con el 7 y como es mayor cojo el rango de los valores del 7 al 10 y lo divido entre 2 y ya obtendría la posición correcta.
Parece un lio pero pienso que cuando se trabaje con arrais muy grandes puede mejorar los tiempos con respecto a lo que indicas pero no doy con la tecla. He estado dándole muchas vueltas y ahora mismo la tengo así la función que obtiene la posicion pero no funciona a como quiero:
Código PHP:
int buscarPos(int valor, int array[], int size_array) 
{ 
    
int pos=size_array,aux_pos; 
    if (
size_array > 0){
        do{ 
            
aux_pos=pos; 
            if (
valor > array[pos-1]){
                if (
aux_pos == pos || valor < array[pos]){ 
                    break;
                }else {
                    
pos = size_array - (size_array -pos)/2;
                }
            }else if (
valor < array [pos-1]){
                
size_array = pos;
                
pos = size_array / 2;
                if(
aux_pos==pos){
                    break;
                }
            }else {
                break;
            }
        }while(
aux_pos != pos); 
    }
    return 
pos; 
} 
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
funciona bien en windows 7 64b pero en XP no funciona ASAPLTDA Varios 5 06-05-2011 17:24:50
funcion RANDOM ... funciona bien ?!!!!! ingel Varios 5 07-04-2010 16:22:08
No funciona bien el QrImage en el QReport AGAG4 Impresión 11 29-10-2008 17:16:56
QRImage no funciona bien eljinete Impresión 4 16-12-2005 02:02:05
La insercion de registros funciona pero..... ilichhernandez Conexión con bases de datos 1 22-10-2005 12:24:33


La franja horaria es GMT +2. Ahora son las 16:58:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi