lunes, 19 de mayo de 2014

Unidad 2: Ordenamiento internos y externos



Tipos de ordenamientos:
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos.

Los internos:
Son aquellos en los que los valores a ordenar están en memoria principal, por lo que se asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1], a[500], etc).

Los externos:
Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro magnético, etc), por lo que se asume que el tiempo que se requiere para acceder a cualquier elemento depende de la última posición accesada (posición 1, posición 500, etc).

Eficiencia en tiempo de ejecución:
Una medida de eficiencia es:
Contar el # de comparaciones (C)
Contar el # de movimientos de items (M)
Estos están en función de el #(n) de items a ser ordenados.
Un "buen algoritmo" de ordenamiento requiere de un orden nlogn comparaciones.

La eficiencia de los algoritmos se mide por el número de comparaciones e intercambios que tienen que hacer, es decir, se toma n como el número de elementos que tiene el arreglo o vector a ordenar y se dice que un algoritmo realiza O(n2) comparaciones cuando compara n veces los n elementos, n x n = n2

Algoritmos de ordenamiento:

Internos:

Inserción directa.
Inserción binaria.
Inserción directa.

Selección directa.
Selección directa.
Burbuja.
Shake.
Intercambio directo.
Shell.
Inserción disminución incremental.
Heap.
Tournament.
Ordenamiento de árbol.

Quick sort.
Sort particionado.
Merge sort.
Radix sort.
Cálculo de dirección.


Externos:
Straight merging.
Natural merging.
Balanced multiway merging.
Polyphase sort.
Distribution of initial runs.


Ejemplos:

package Archivos2;
import java.io.*;
public class ListaFicheros {
public static void main(String args[]){
File canal = new File("C:\\Users\\Daniel"); //crea el archivo en la ruta especificada
File[]lista=canal.listFiles();
for(int i=0; i<lista.length; i++)
System.out.println(lista[i]);
}
}
--------------------------------------------------------------------------------------------------------
package AtributosFichero;
import java.io.*;
public class AtributosFichero {
public static void main (String args []){
String nombreF;
InputStreamReader flujo = new InputStreamReader(System.in); //es un puente de flujos de bytes a streams de caracteres: Se lee bytes y los decodifica en caracteres que utilicen un determinado caracter
BufferedReader teclado = new BufferedReader(flujo); //Leer Entradas desde el Teclado
try{System.out.println("Introduce el nombre del fichero"); //// Código que puede generar la excepción
nombreF = teclado.readLine(); //lee un string (numeros, letras , etc)
File f = new File(nombreF);
System.out.println("Nombre:"+f.getName()); //imprime el nombre del fichero obtenido
if(f.exists()){
System.out.println("El fichero existe");
if(f.canRead()) System.out.println ("Se puede leer");
if(f.canWrite())System.out.println ("La longitud del fichero es: " + f.length()+ "bytes");
}
else
System.out.println("El fichero no existe");
}catch (Exception e){ //// Código para tratar el error
System.out.println(e.getMessage()); //obtiene el mensaje de la excepcion
}
}
}
















No hay comentarios.:

Publicar un comentario