domingo, 18 de abril de 2010

Algoritmos de ordenamiento

Algoritmo burbuja

Es un sencillo algoritmo de ordenamiento, este algoritmo compara cada uno de los elementos del array, lo compara con el siguiente y si el orden esta equivocado lo cambia y asi sucesivamente hasta que el array no necesite mas intercambios se dice que esta arreglado.












Algoritmo de Inserción

Es un metodo de ordenación, este toma cada dato del arreglo y lo compara con los que se encuentran en posiciones anteriores. Si resulta que el dato con el que se esta comparando es mayor que el dato base, se corre hacia la siguiente posición. Si por el contrario, resulta que el dato con el que se esta comparando es menor, se detiene el proceso de comparación ya que se encontró que esta ordenado y se coloca en su posición.
Es un algoritmo lento, pero puede ser de utilidad para listas semiordenada, pues en ese caso se realizan pocos desplazamientos.

Algoritmo de shell

Es un algoritmo de ordenamiento, se dice que es la generalización del metodo de inserción ya que el metodo de inserción es eficiente si el arreglo esta semiordenado, pero tambien ineficiente porque mueve un dato cada vez.




Este algoritmo es un simple ordenamiento por inserción, solo que este garantiza que los datos del vector estaran casi ordenados, ya que compara elementos separados por espacios de varias posiciones, esto que permite que sea mas rapido hacia la posición adecuada.















Bibliografia





Ordenamientos

Entramos ahora en un tema un poco complejo para algunos pero de mucha ayuda en la solución de problemas complejos.

Empezemos con la pregunta basica.

¿Que es un ordenamiento?

Es la acción de arreglar los datos de un array en un orden secuencial de acuerdo a un criterio. El ordenamiento se lleva a cabo teniendo en cuenta algún campo en los datos y se hace con el fin de permitir una búsqueda fácil de datos.

El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético, de una manera ascendente o descendente.

Ejemplo:




¿Cuándo conviene usar un método de ordenamiento?

Cuando se requiere hacer una cantidad considerable de búsquedas y es importante el factor tiempo.

Existen diferentes algoritmos de ordenamiento entre los que encontramos:
  • Burbuja
  • Shell
  • Inserción
  • Quicsort
  • Mergesort
Bibliografia

martes, 6 de abril de 2010

Arrays

Retomamos el tema visto de forma teorica hace mucho tiempo en una clase de algoritmica II, en aquella ocasión donde los problemas eran mas dificiles, estabamos empezando a conocer todo lo referente al mundo de los algoritmos y la programación. Espero que en la parte practica se nos haga mas divertido el aprendizaje y que asimilemos todo lo referente al tema para un futuro, tengo mucha expectativa en esta clase, ya que en cierto tiempo muchos no fuimos muy buenos en el tema. Pero yo se que cada dia todos pondremos de nuestra parte para que la clase sea la mas agradable y entendible.

Bueno ya entrando un poco en el tema, un Array es una estructura de datos que nos permite almacenar variables de un mismo tipo, nos permite tener un manejo mas organizado ya que la variable tiene una distinción numérica, el 0 es el índice del primer elemento mientras que n-1 es el del ultimo.

Los arrays pueden ser de cualquier tipo de dato incluyendo objetos, ya que a su vez, ese tipo de dato es un objeto, las variables de tipo arrays se declaran utilizando [].
Existen dos tipos de arrays:
  • Unidimensional (vectores)
  • Multidimensional (matrices)
En programación los arrays deben declararse, crearse, inicializarse para que podamos usarlos y realizar operaciones con ellos.

Unidimensional (vectores)

tipo_dato[] nombre_array; //declarar

nombre_array= new tipo_dato[tamaño];
// crear (asi reservamos un espacio en la memoria para los datos)


nombre_array[numero_elemento]= valor;
//inicialización(tambien se puede hacer por medio de un for)

for (int i=0; i<(numero_elemento); i++)
{
nombre_array[i]=s.nexttipo_dato();
}

variable= nombre_array[numero_elemento] //asignación

veamos un ejemplo:



int [] vector;
vector = new int [4];
vector[2]=3;
k= vector [2];

un arreglo llamando vector, tiene cuatro elementos de tipo entero, y a k le asignamos el valor del tercer elemento.

Multidimensional (matrices)

tipo_dato[][] nombre_array; //declarar

nombre_array= new tipo_dato[tamaño][tamaño];
// crear (asi reservamos un espacio en la memoria para los datos)

nombre_array[numero_elemento][numero_elemento1]= valor;
//inicialización (tambien se puede hacer por medio de un for)
el valor del numero_elemento1 es opcional solo cuando toda la matriz tiene el mismo tamaño, tenemos el ejemplo cuando es cuadrada, en caso contrario se deja vacio el espacio.

variable= nombre_array[numero_elemento][numero elemento1] //asignación

veamos un ejemplo:

double[][] matrizUnidad;
matrizUnidad= new double [4][4];
for (int i=0; i<4;i++)
{

for (int j=0; j<4;j++)
{

if (i==j)
matrizUnidad[i][j]=1.0;
else
matrizUnidad[i][j]=0.0;
}
}


ejemplo tomado de:
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/arays.htm



int[][] matriz;
matriz= new int [4][ ];
matriz[2][0]=3;
k= matriz [2][0];





Bibliografia




martes, 23 de febrero de 2010

JDK vs JRE

Java Development Kit (JDK) es el paquete para desarrollar programas en Java, en otras palabras es un software que suministra herramientas para la creación de programas en Java, mientras que Java Runtime Environment (JRE) es el paquete que permite la ejecución de programas Java, este es lo minimo con lo que debe contar un sistema para desarrollar una aplicación de Java.


Se podria decir que JRE complementado con herramientas de desarrollo permite la realización de JDK o dicho en otras palabras JRE se encuentra contenido en JDK.


Las personas solo necesitan JRE para ejecutar los programas ya realizados en Java pero si desea desarrollar aplicaciones en Java es necesario el entorno de desarrollo JDK, eso es lo que diferencia a JRE de JDK.

Estructura De Datos


El presente trabajo es simplemente una breve introducción al mundo de la estructura de datos además es un paso importante hacia nuestro sueño de ser un gran profesional competitivo, la verdad tengo una gran expectativa de lo que podamos aprender y desarrollar en esta materia basándonos en los conocimientos y proyectos antes vistos. por supuesto espero contar con todo el apoyo del docente para que esta materia sea de mi agrado y no solo mía sino de todos los compañeros que iniciamos el curso de ESTRUCTURA DE DATOS I.

La estructura de datos es la acumulación de datos organizados que nos permite de alguna forma mostrar un comportamiento o por lo menos facilitarnos el manejo de dichos datos ya sea de forma individual o grupal en funcion del problema a tratar conjuntamente nos proporciona la búsqueda del algoritmo adecuado para resolver el problema.

"La elección del algoritmo depende de la dificultad del problema y de la estructura de datos adecuada, esó permite una buena interacción entre las dos"

Una estructura de datos define la interacción y organización de cada uno de sus datos y nos muestra las diferentes operaciones que podemos realizar sobre ellos. las operaciones son:

  • Búsqueda: Nos permite encontrar un determinado valor en la estructura.
  • Baja: Nos permite borrar un valor de la estructura.
  • Alta: Nos permite agregar un nuevo valor a la estructura.

Dependiendo del comportamiento que muestre el programa mientras lo ejecutamos podemos distinguir dos estructuras de datos: Estática y dinámica. Los arrays son un claro ejemplo de E.D. ESTATICA y las listas enlazadas con punteros ejemplo de E.D. DINAMICA.

Para concluir solo espero que el presente blog sea un aporte para los compañeros que nos proceden.

Bibliografia