UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL ARRAYS
Un array es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un número entero denominado índice. 0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo n, la dimensión del array. Los arrays son objetos en Java y como tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente Declarar el array Crear el array Inicializar los elementos del array Usar el array
Declarar y crear un array Para declarar un array se escribe tipo_de_dato[] nombre_del_array; Para declarar un array de enteros escribimos int[] numeros; Para crear un array de 4 número enteros escribimos numeros=new int[4]; La declaración y la creación del array se puede hacer en una misma línea. int[] numeros =new int[4]; Inicializar y usar los elementos del array Para inicializar el array de 4 enteros escribimos numeros[0]=2; numeros[1]=-4; numeros[2]=15; numeros[3]=-25;
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
Se pueden inicializar en un bucle for como resultado de alguna operación for(int i=0; i<4; i++){ numeros[i]=i*i+4; } No necesitamos recordar el número de elementos del array, su miembro dato length nos proporciona la dimensión del array. Escribimos de forma equivalente for(int i=0; i
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
rectangulos[1]=new Rectangulo(30, 40); rectangulos[2]=new Rectangulo(50, 80); O bien, en una sola línea Rectangulo[] rectangulos={new Rectangulo(10, 20, 30, 40), new Rectangulo(30, 40), new Rectangulo(50, 80)}; Usar el array Para calcular y mostrar el área de los rectángulos escribimos for(int i=0; i
Arrays multidimensionales
Una matriz bidimensional puede tener varias filas, y en cada fila no tiene por qué haber el mismo número de elementos o columnas. Por ejemplo, podemos declarar e inicializar la siguiente matriz bidimensional double[][] matriz={{1,2,3,4},{5,6},{7,8,9,10,11,12},{13}}; La primer fila tiene cuatro elementos {1,2,3,4} La segunda fila tiene dos elementos {5,6} La tercera fila tiene seis elementos {7,8,9,10,11,12} La cuarta fila tiene un elemento {13} Para mostrar los elementos de este array bidimensional escribimos el siguiente código for (int i=0; i < matriz.length; i++) { for (int j=0; j < matriz[i].length; j++) { System.out.print(matriz[i][j]+"\t"); } System.out.println("");
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
} Como podemos apreciar, y
matriz.length nos proporciona el número de filas (cuatro),
matriz[i].length , nos proporciona el número de elementos en cada fila.
Mostramos los elementos de una fila separados por un tabulador usando la función print . Una vez completada una fila se pasa a la siguiente mediante println. Los arrays bidimensionales nos permiten guardar los elementos de una m atriz. Queremos crear y mostrar una matriz cuadrada unidad de dimensión 4. Recordaremos que una matriz unidad es aquella cuyos elementos son ceros excepto los de la diagonal pr incipal i==j , que son unos. Mediante un doble bucle for recorremos los elementos de la matriz especificando su fila i y su columna j . En el siguiente programa Se crea una matriz cuadrada de dimensión cuatro Se inicializa los elementos de la matriz (matriz unidad) Se muestra la matriz una fila debajo de la otra separando los elementos de una fila por tabuladores. METODOS DE ORDENAMIENTO
ORDENAMIENTO
El ordenamiento es una labor común que realizamos cotidianamente, es un proceso tan común en nuestras vidas que no nos detenemos a meditar mucho en ello. Ordenar es meramente colocar información de una manera especial basándonos en un criterio de or denamiento. En la ciencia de la computación el ordenamiento de datos también cumple un rol m uy importante, ya sea como un fin en sí o como parte de otros procedimientos más complejos. Se han desarrollado muchas técnicas en este ámbito, cada una con características específicas, y con ventajas y desventajas sobre las demás. El propósito principal de un ordenamiento es el de facilitar la búsqueda de información. 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 o incluso alfanumérico, ascendente o descendente.
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
ORDENAMIENTO INTERNO. Se lleva a cabo completamente en memoria principal. Todos los objetos que se ordenan caben en la memoria principal de la computadora
ORDENAMIENTO EXTERNO. No cabe toda la información en memoria principal y es necesario ocupar memoria secundaria. El ordenamiento ocurre transfiriendo bloques de información a memoria principal en donde se ordena el bloque y este es regresado, ya ordenado, a memoria secundaria
ORDENAMIENTO DE BURBUJA La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.
ORDENAMIENTO SHELL El ordenamiento Shell (Shell sort en inglés) es un algoritmo de ordenamiento. El método se denomina Shellen honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso. Un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. El algoritmo Shell sort mejora el
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.
ORDENAMIENTO POR INSERCION
El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos. Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.
ORDENAMIENTO POR SELECCION
El ordenamiento por selección (Selection Sort en inglés) es un algoritmo de ordenamiento que requiere O
operaciones para ordenar una lista de n elementos.
Su funcionamiento es el siguiente:
Buscar el mínimo elemento de la lista Intercambiarlo con el primero Buscar el mínimo en el resto de la lista Intercambiarlo con el segundo Y en general: Buscar el mínimo elemento entre una posición i y el final de la lista Intercambiar el mínimo con el elemento de la posición i
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
De esta manera se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:
METODO DEL QUICK SORT
El Quick sort es un algoritmo del estilo divide y venceras. Es bastante más rápido que el merge sort. El algoritmo de recursión consiste en una serie de cuatro pasos: 1. Si hay menos de un elemento a ser ordenado retorna inmediatamente (termina). 2. Tomar un elemento del vector que sirve como “muestra”
3. Dividir el array en dos partes, una con los elementos mayores y una con los elementos menores al muestra. 4. Repite recursivamente el algoritmo para las dos mitades del array original hasta que queda ordenado.
Ordenación por mezcla directa
El método de ordenación por mezcla directa es probablemente el más utilizado por su fácil comprensión. La idea central de este algoritmo consiste en la realización sucesiva de una partición y una fusión que produce secuencias ordenadas de longitud cada vez mayor. En la primera pasada la participación es de longitud 1 y la fusión o mezcla produce secuencias ordenadas de longitud 4. Este proceso se repite hasta que la longitud de la secuencia para la partición sea mayor o igual que la longitud de la secuencia para la partición sea mayor o igual que el número de elementos del archivo original.
Supóngase que se desean ordenar las claves del archivo F. Par a realizar tal actividad se utilizan dos archivos auxiliares a los que se les denominará F1 y F2.
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
F: 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61
PRIMERA PASADA
Partición en secuencias de longitud 1.
F1: 09 14 29 31 04 13 72 61 UAA – Sistemas Electrónicos Estructura de Datos Serna 13 F2: 75 68 17 25 05 18 46
Fusión en secuencias de longitud 2.
F1: 09 75 14 68 17 29 25 31 04 05 13 18 46 72 61
SEGUNDA PASADA
Partición en secuencias de longitud 2.
F1: 09 75 17 29 04 05 46 72 F2: 14 68 25 31 13 18 61
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
Fusión en secuencias de longitud 4.
F1: 09 14 68 75 17 25 29 31 04 05 13 18 46 61 72
TERCERA PASADA
Partición en secuencias de longitud 4.
F1: 09 14 68 75 04 05 13 18 F2: 17 25 29 31 46 61 72
Fusión en secuencias de longitud 8.
F1: 09 14 75 25 29 31 68 75 04 05 13 18 46 61 72
CUARTA PASADA
Partición en secuencias de longitud 8.
F1: 09 14 17 25 29 31 68 75 F2: 04 05 13 18 46 61 72 Fusión en secuencias de longitud 16.
F1: 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
Ordenación por mezcla equilibrada
El método de ordenación por mezcla equilibrada, conocido también con el nombre de mezcla natural, es una optimización del método de mezcla directa.
La idea central de este método consiste en realizar las particiones tomando secuencias ordenadas de máxima longitud en lugar de secuencias de tamaño fijo previamente determinadas. Luego realiza la fusión de las secuencias ordenadas, alternativamente sobre dos archivos aplicando estas acciones en forma repetida se lograra que el archivo original quede ordenado. Para la r ealización de este proceso de ordenación se necesitaran cuatro archivos. El archivo original F y tres archivos auxiliares a los que se denominaran F1, F2 y F3. De estos archivos, dos serán considerados de entrada y dos de salida; esto, alternativamente, con el objeto de realizar la fusión-partición. El proceso termina cuando en la realización de una fusión-partición el segundo archivo quede vacío. UAA – Sistemas Electrónicos Estructura de Datos Serna
EJEMPLO :
Suponga que se desean ordenar las claves del archivo F utilizando el método de mezcla equilibrada.
F: 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61 Los pasos que se realizan son los siguientes:
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
PARTICIÓN INICIAL
F2: 09 75 29 25 46 61 F3: 14 68 17 31 04 05 13 18 72
PRIMERA FUSION-PARTICION
F: 09 14 68 75 04 05 13 18 25 46 61 72 F1: 17 29 31
SEGUNDA FUSION-PARTICION
F2: 09 14 17 29 31 68 75 F3: 04 05 13 18 25 46 61 72
TERCERA FUSION-PARTICION
F: 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75 F1:
Obsérvese que al realizar la tercera fusión-partición el segundo archivo queda vació, por lo que se puede afirmar que el archivo ya se encuentra ordenado.
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
Ordenamiento Externo
La ordenación de archivos se lleva a cabo cuando el volumen de los datos a tratar es demasiado grande y los mismos no caben en la memoria principal de la computadora.
Al ocurrir esta situación no pueden aplicarse los métodos de ordenación interna, de modo que debe pensarse en otro tipo de algoritmos para ordenar datos almacenados en archivos.
Por ordenación de archivos se entiende, entonces, la ordenación o clasificación de éstos, ascendente o descendentemente, de acuerdo con un campo determinado al que se denominará campo clave. La principal desventaja de esta ordenación es el tiempo de ejecución, debido a las sucesivas operaciones de entrada y salida.
Los dos métodos de ordenación externa más importantes son los basados en la mezcla directa y en la mezcla equilibrada.
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
PROGRAMACIÓN EN C++
BURBUJA
#include
#include main() { int d,a,b,i,j,tmp,num,c['n']; clrscr(); printf("ingresa numero de campos: "); scanf("%d",&a); clrscr(); for(b=0;b
for(b=0;b
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
for(i=0; ii; j=j-1) { if (c[j] < c[j-1]){ tmp = c[j]; c[j] = c[j-1]; c[j-1] = tmp; } } }
//numeros ordenados for(b=0;b
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
SHELL
#include #include
#define MAX 100
main() { float arreglo[MAX], aux; int n,i,j,k,inc;
printf("Introduzca el número de datos a ordenar:\t"); scanf("%d",&n); printf("\nIntroduzca los datos:\n");
for(i=1;i<=n;i++) scanf("%f",&arreglo[i]); inc=n/2;
while(inc>0) { for(i=inc+1;i<=n;i++) {
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
j=i-inc; while(j>0) { k=j+inc; if(arreglo[j]<=arreglo[k]) j=0; else { aux=arreglo[j]; arreglo[j]=arreglo[k]; arreglo[k]=aux; j-=inc; } } } inc/=2; }
printf("\nDatos ordenados:\n"); for(i=1;i<=n;i++) printf("%.f\t",arreglo[i]);
getch(); return 0; }
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
INSERCCIÓN
#include #include int num[100000],n; void insercion() { int tem; for (int q=1;q0 && tem
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
{ printf("cant. de numeros: "); scanf("%d",&n); for (int y=0;y
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
SELECCIÓN
#include #include int v[100000],n; void num_ordenados() { int valor_temporal; for (int q=0;q
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
for (int t=0;t
} } main() { printf("cant. de numeros: "); scanf("%d",&n); for (int i=0; i<=n-1;i++) { printf("\ningrse numero %d: ",i+1); scanf("%d",&v[i]); } printf("\norden en el que fueron ingresado:\n\n"); orden();/*llamamos nuetra operacion para imprimirlo con el orden en el que fueron ingresados*/ num_ordenados();/*luego ya con el metoo de seleccion*/ printf("\n"); printf("\nmetodo de seleccion:\n\n"); orden(); }
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
QUICK SORT #include #include #define NMAX 100 void ordenar(float[],int,int); main() { int i,n; float arreglo[NMAX]; printf("Introduzca el número de elementos a ordenar:\t"); scanf("%d",&n); printf("\nIntroduzca los elementos:\n"); for(i=0;i
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
izq=inf; der=sup; mitad=arreglo[(izq+der)/2]; do { while(mitad>arreglo[izq] && sup>izq) izq++; while(mitad
INFORME DE LENGUAJE C++
UNIVERSIDAD NACIONAL DE PIURA – FACULTAD DE INGENIERIA CIVIL
UNIVERSIDAD NACIONAL DE PIURA Facultad De Ingeniería De Civil Escuela Profesional De Ingeniería De Civil
TEMA:
CURSO:
TIPOS DE ORDENAMIENTOS Y CODIFICACIÓN
LENGUAJE C++
PROFESOR: Ing . CHERRE LIZAMA LUIS
ALUMNO:
ROA PAIBA HARVEY VICTOR JOEL ECHE FIESTAS JHON
CICLO:
III
SECHURA-PIURA.PERÚ 2014
INFORME DE LENGUAJE C++