oredenamento mergesortcpp// En el código usamos la clase vector (#include <vector.h>) para crear losvectores,// obviamente...
int x1=0, x2=0, x3=0;    while (x1<n1 && x2<n2) {        if (arreglo1[x1]<arreglo2[x2]) {            arreglo3[x3] = arregl...
private int A[]; public int[] OrdenaMerge(int[] L) {    int n = L.length;    if (n >   1){        int   m = (int) (Math.ce...
public void imprimir(){        for(int i = 0; i < A.length; i++){            System.out.println(A[i]);        }    }    pu...
{   int cedula;   struct nodo*siguiente;}tiponodo;typedef tiponodo *pnodo;typedef tiponodo *cola;cola cola_n=NULL;cola col...
{         cout<<"Cedula: "<<aux->cedula<<endl;         cout<<""<<endl;         aux=aux->siguiente;         cout<<"* Client...
if((*cola_n)!=NULL){                                          cout<<"Cliente: "<<(*cola_n)->cedula;                       ...
cout<<"                                 *                     *                   *"<<endl;    cout<<"                 *  ...
}   system("PAUSE");   return EXIT_SUCCESS;}void menu() {     short a;     do {        cout<<""<<endl;        cout<< "0 - ...
insertar(&cola_n);    }         void insertar_vip(){              insertar(&cola_vip);              }         void mostrar...
Upcoming SlideShare
Loading in …5
×

Metodos de ordenamiento

900 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
900
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
54
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Metodos de ordenamiento

  1. 1. oredenamento mergesortcpp// En el código usamos la clase vector (#include <vector.h>) para crear losvectores,// obviamente funciona igual de bien si se utilizan los arrays tipo C: TIPO V[]template <class T, class U>void fusiona(vector<T>& v, U ini, U med, U fin) { vector<T> aux(fin - ini + 1); int i = ini; // Índice de la parte izquierda int j = med + 1; // Índice de la parte derecha int k = 0; // Índice del vector aux /* Mientras ninguno de los indices llegue a su fin vamos realizando comparaciones. El elemento más pequeño se copia al vector aux */ while (i <= med && j <= fin) { if (v[i] < v[j]) { aux[k] = v[i]; i++; } else { aux[k] = v[j]; j++; } k++; } /* Uno de los dos sub-vectores ya ha sido copiado del todo, simplemente debemos copiar todo el sub-vector que nos falte */ while (i <= med) { aux[k] = v[i]; i++; k++; } while (j <= fin) { aux[k] = v[j]; j++; k++; } /* Copiamos los elementos ordenados de aux al vector original v */ for (int n = 0; n < aux.size(); ++n) v[ini + n] = aux[n];}template <class T, class U>void merge_sort(vector<T>& v, U ini, U fin) { /* Si ini = fin el sub-vector es de un solo elemento y, por lo tanto ya está ordenado por definición */ if (ini < fin) {/*Considerar que el valor de med siempre es redondeado hacia abajo.*/ int med = (ini + fin)/2; merge_sort(v, ini, med); merge_sort(v, med + 1, fin); fusiona(v, ini, med, fin); }}cvoid mezclar(int arreglo1[], int n1, int arreglo2[], int n2, int arreglo3[]){
  2. 2. int x1=0, x2=0, x3=0; while (x1<n1 && x2<n2) { if (arreglo1[x1]<arreglo2[x2]) { arreglo3[x3] = arreglo1[x1]; x1++; } else { arreglo3[x3] = arreglo2[x2]; x2++; } x3++; } while (x1<n1) { arreglo3[x3] = arreglo1[x1]; x1++; x3++; } while (x2<n2) { arreglo3[x3] = arreglo2[x2]; x2++; x3++; }}void mezcla(int vector[], int n){ int *vector1, *vector2, n1, n2,x,y; if (n>1) { if (n%2 == 0) n1=n2=(int) n / 2; else { n1=(int) n / 2; n2=n1+1; } vector1=(int *) malloc(sizeof(int)*n1); vector2=(int *) malloc(sizeof(int)*n2); for(x=0;x<n1;x++) vector1[x]=vector[x]; for(y=0;y<n2;x++,y++) vector2[y]=vector[x]; mezcla(vector1, n1); mezcla(vector2, n2); mezclar(vector1, n1, vector2, n2, vector); free(vector1); free(vector2); }}int main(){ int i, vector[] = {2,3,5,7,2,6,1,5,8,3,2}; mezcla(vector,12); for(i=0;i<12;i++) printf("%i,n", vector[i]); return 0;}javapublic class MergeSort{
  3. 3. private int A[]; public int[] OrdenaMerge(int[] L) { int n = L.length; if (n > 1){ int m = (int) (Math.ceil(n/2.0)); int [] L1 = new int[m]; int [] L2 = new int[n-m]; for (int i = 0; i < m; i++){ L1[i] = L[i]; } for (int i = m; i < n; i++){ L2[i-m] = L[i]; } L = merge(OrdenaMerge(L1), OrdenaMerge(L2)); } return L;}public int[] eliminar(int [] l){ int [] L = new int[l.length-1]; for(int i = 1; i < l.length; i++){ L[i-1] = l[i]; } return L;}public int[] merge(int[] L1, int[] L2) { int[] L = new int[L1.length+L2.length]; int i = 0; while ((L1.length != 0) && (L2.length != 0)) { if (L1[0] < L2[0]){ L[i++] = L1[0]; L1 = eliminar(L1); if (L1.length == 0){ while (L2.length != 0) { L[i++] = L2[0]; L2 = eliminar(L2); } } } else{ L[i++] = L2[0]; L2 = eliminar(L2); if (L2.length == 0) { while (L1.length != 0) { L[i++] = L1[0]; L1 = eliminar(L1); } } } } return L;}public void generarNumeros(){ Random ran = new Random(); int x; for(int i = 0; i < A.length; i++){ x = (int)(ran.nextDouble()*10000); A[i] = x; }}
  4. 4. public void imprimir(){ for(int i = 0; i < A.length; i++){ System.out.println(A[i]); } } public int[] getA(){ return A; } public void setA(int []A){ this.A = A; }}quicksortint colocar(int *v, int b, int t){ int i; int pivote, valor_pivote; int temp; pivote = b; valor_pivote = v[pivote]; for (i=b+1; i<=t; i++){ if (v[i] < valor_pivote){ pivote++; temp=v[i]; v[i]=v[pivote]; v[pivote]=temp; } } temp=v[b]; v[b]=v[pivote]; v[pivote]=temp; return pivote;}void Quicksort(int* v, int b, int t){ int pivote; if(b < t){ pivote=colocar(v, b, t); Quicksort(v, b, pivote-1); Quicksort(v, pivote+1, t); }}#include <stdio.h>#include <iostream.h>#include <conio.h>#include <stdlib.h>#include <string.h>using namespace std;typedef struct nodo
  5. 5. { int cedula; struct nodo*siguiente;}tiponodo;typedef tiponodo *pnodo;typedef tiponodo *cola;cola cola_n=NULL;cola cola_vip=NULL;int solic;void insertar (cola *cola_n){ cola aux, creado; creado=(pnodo)malloc(sizeof(tiponodo)); cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl; cout<<" ||||||||||||||||||||METROPOLI bancouniversal||||||||||||||||||||"<<endl; cout<<" |||||||||||||||||||||||Le da labienvenida|||||||||||||||||||||||"<<endl; cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl; cout<<" Estimado cliente: Introduzca su numero de cedula"<<endl; cin>> creado->cedula; cout<<" Pronto sera atendido"<<endl; if ((*cola_n)==NULL) { creado->siguiente=*cola_n; *cola_n=creado; } else { aux=*cola_n; while(aux!=NULL) { if(aux->siguiente==NULL) { creado->siguiente=aux->siguiente; aux->siguiente=creado; aux=aux->siguiente; } aux=aux->siguiente; } }}void mostrar_cola (cola cola_n){ cola aux; aux=cola_n; if(aux==NULL) { cout<<"No hay clientes en cola"<<endl; } else { while(aux!=NULL)
  6. 6. { cout<<"Cedula: "<<aux->cedula<<endl; cout<<""<<endl; aux=aux->siguiente; cout<<"* Clientes ordenados por orden dellegada((((((SIMCOLAS))))))"<<endl; } }}//modificado hasta acá... falta de orden por parte del creadorvoid insertar_vip (cola *cola_vip){ cola aux_2, creado_vip; creado_vip=(pnodo)malloc(sizeof(tiponodo)); cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl;//62 cout<<" ||||||||||||||||||||METROPOLI bancouniversal||||||||||||||||||||"<<endl; cout<<" |||||||||||||||||||||||Le da labienvenida|||||||||||||||||||||||"<<endl; cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl; cout<<" Estimado cliente: Introduzca su numero de cedula"<<endl; cin>> creado_vip->cedula; cout<<" Pronto sera atendido"<<endl; if ((*cola_vip)==NULL){ creado_vip->siguiente=*cola_vip; *cola_vip=creado_vip; }else{ aux_2=*cola_vip; while(aux_2!=NULL){ if(aux_2->siguiente==NULL){ creado_vip->siguiente=aux_2->siguiente; aux_2->siguiente=creado_vip; aux_2=aux_2->siguiente; } aux_2=aux_2->siguiente; } }}void mostrar_cola_vip (cola cola_vip){ cola aux_2; aux_2=cola_vip; if(aux_2==NULL){ cout<<"No hay clientes V.I.P en cola"<<endl; }else{ while(aux_2!=NULL){ cout<<"Cedula: "<<aux_2->cedula<<endl; cout<<""<<endl; cout<<"* Clientes ordenados por orden dellegada((((((SIMCOLAS))))))"<<endl; aux_2=aux_2->siguiente; } }}void pop (cola *cola_n){ if((*cola_n)==NULL){ cout<<"No hay clientes en cola ((((((SIMCOLAS))))))"<<endl; cout<<""<<endl; }
  7. 7. if((*cola_n)!=NULL){ cout<<"Cliente: "<<(*cola_n)->cedula; cout<<" es su turno"<<endl; *cola_n=(*cola_n)->siguiente; free(cola_n); system("PAUSE"); cout<<""<<endl; } if((*cola_n)==NULL){ cout<<"No hay clientes en cola((((((SIMCOLAS))))))"<<endl; cout<<""<<endl; }else{ cout<<"Cliente: "<<(*cola_n)->cedula; cout<<" es su turno"<<endl; *cola_n=(*cola_n)->siguiente; free(cola_n); system("PAUSE"); cout<<""<<endl; } } void pop_vip(cola *cola_vip){ if(cola_vip!=NULL){ cout<<"Cliente:"<<(*cola_vip)->cedula; cout<<" es suturno"<<endl; *cola_vip=(*cola_vip)->siguiente; free(cola_vip); }else{ cout<<"No hayusuarios V.I.P en cola ((((((SIMCOLAS))))))"<<endl; } }void menu();void Insertar();void insertar_vip();void mostrar_cola();void mostrar_colavip();void solicitar_numero();void salir();struct perly{char uxer[];}data;struct perly *p = &data;int main(int argc, char *argv[]){ system("color 0a");
  8. 8. cout<<" * * *"<<endl; cout<<" * *"<<endl; cout<<" * | * * * *"<<endl; cout<<" * -+- *"<<endl; cout<<" __ | * * * *"<<endl; cout<<" ___| | * _|_ * ____ ____"<<endl; cout<<" [_]|°°|__ _| |_ * | |....| |....| * *"<<endl; cout<<" | | _|[] []|_ ___ | |....| | ___|__"<<endl; cout<<" [_]| °° |__|_ ______| | | |_| |....| || -- - | * *"<<endl; cout<<" |________ |__ | |# #| |_| |....| || - -- | _____"<<endl; cout<<" [_]| _____ | |__[]| | | |_| |....|__|| -- - | |* * *|"<<endl; cout<<" | [___] | |__ |# #| |_| |....|__|| -- -_|_|* * *|"<<endl; cout<<" [_]| | °° | | |__| |__|....| || ___|* *|* * *|"<<endl; cout<<" | _____ | |__ #|_______|....| | |* *|* *|* * *|"<<endl; cout<<" [_]| [___] | °° |__|_______|__ | | |* *|* *|* * *|"<<endl; cout<<" | | __|_____________|__ |* *|* *|* * *|"<<endl; cout<<" [_]| _____ | °° _|___________________|_ |* *|* *|* * *|"<<endl; cout<<" | [___] | |_______________________| ______________"<<endl; cout<<" __|_______|_________|_______________________| _________________"<<endl; cout<<" |_______________________________________________________________|"<<endl; cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl;//62 cout<<" ||||||||||||||||||||METROPOLI bancouniversal||||||||||||||||||||"<<endl; cout<<" ||||||||||||Sistema Integral para el Manejo deCOLAS|||||||||||||"<<endl; cout<<" |||||||||||||||||||||||||||||SIMCOLAS||||||||||||||||||||||||||||"<<endl; cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl; cout<<" |||||||||Creado por: Javier Rodriguez Caracas-Venezuela||||||||||"<<endl; cout<<"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"<<endl; cout<<" Login: "; char usuario[6] = "jahvi"; cin.getline(p->uxer,6); if (strcmp(p->uxer,usuario) == 0) { cout<<"Bienvenid@ al sistema "<<endl; menu(); cout<<""<<endl; }else{ cout<<"Acceso Denegado. Consulte alAdmisnistrador "<<endl;
  9. 9. } system("PAUSE"); return EXIT_SUCCESS;}void menu() { short a; do { cout<<""<<endl; cout<< "0 - Agregar Cliente"<<endl; cout<< "1 - Agregar Cliente V.I.P"<<endl; cout<< "2 - Solicitar Numero"<<endl; cout<< "3 - Mostrar Cola"<<endl; cout<< "4 - Mostrar Cola V.I.P"<<endl; cout<< "5 - Salir del Sistema"<<endl; cout<<""<<endl; fflush(stdout); cout<<"Opcion #:"; cin>>a; cout<<""<<endl; if (a == 5) exit(1); switch(a){ case 0 : Insertar(); break; case 1 : insertar_vip(); break; case 2 : solicitar_numero(); break; case 3 : mostrar_cola(); break; case 4 : mostrar_colavip(); break; case 5 : salir(); break; default : puts("Usted no haseleccionado nada, porfavor seleccione algon"); break; }; } while (1); }void Insertar(){
  10. 10. insertar(&cola_n); } void insertar_vip(){ insertar(&cola_vip); } void mostrar_cola(){ mostrar_cola(cola_n); } void mostrar_colavip(){ mostrar_cola_vip(cola_vip); } void solicitar_numero(){ pop(&cola_n); if(cola_vip!=NULL){ pop_vip(&cola_vip); }else{ cout<<"No hay cliente V.I.P encola ((((((SIMCOLAS))))))"<<endl; } } void salir(){ }ordenamiento shellpublic static void main(String [] args) { //arreglo int Entrada[] = { 321, 123, 213, 234, 1, 4, 5, 6, 21, 15 }; //llamada shellSort(Entrada); for (int i = 0; i < Entrada.length; i++) { System.out.print(Entrada[i]+" "); } }public static void shellSort( int vec[]) { // saltos for( int p = vec.length / 2; p > 0; p = p == 2 ? 1 : (int) ( p / 2.2 ) ) { for( int i = p; i < vec.length; i++) { int tmp = vec[i]; int j; for(j = i; j >= p && tmp < vec[j - p]; j -= p ) { vec[j] = vec[j - p]; } vec[j] = tmp; } }}

×