Mostrando entradas con la etiqueta programacion II. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion II. Mostrar todas las entradas

martes, 26 de noviembre de 2013

Metodo de Burbuja (Bubble Sort) en C++

Hola amig@s esta ves les traigo el Método de Ordenación de Burbuja o Bubble Sort (en ingles) este método 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.


Imagen:



Código:

BubbleSort.cpp:



#include "Bubblesort.h" void main(){ BubbleSort BS; int n; do{cout<<"Cuantos elementos desea ingresar: ";cin>>n;}while(n<1||n>100); for(int i=0;i<n;i++){ cout<<endl<<"Dato["<<i+1<<"]: ";cin>>BS.vector[i]; } system("cls"); cout<<endl<<endl<<"Vector original:"<<endl<<endl; for(int i=0;i<n;i++){ cout<<BS.vector[i]<<" "; } BS.bubbleSort(BS.vector,n); cout<<endl<<endl<<"Vector Ordenado Con Metodo de la burbuja:"<<endl<<endl; for(int i=0;i<n;i++){ cout<<BS.vector[i]<<" "; } system("pause>null"); }


BubbleSort.h:



#include <iostream> #include <windows.h> using namespace std; class BubbleSort{ public: int vector[100],tmp; void bubbleSort(int[],int); void mostrar(int[],int); }; void BubbleSort::bubbleSort(int V[],int N){ for(int i=0;i<N;i++){ for(int j=i+1;j<N;j++){ if(V[i]>V[j]){ tmp=V[i]; V[i]=V[j]; V[j]=tmp; } } } } void BubbleSort::mostrar(int V[],int N){ for(int i=0;i<N;i++){ cout<<V[i]<<" "; } }


Descarga el código fuente desde aquí.

martes, 16 de julio de 2013

Arbol Binario en C++

Hola amigos esta vez les mostrare un arbol binario con los recorrios in-orden, post-orden y pre-orden.

Captura:



Codigo:

Arbol.cpp


#include<iostream>
#include"arbol.h"
using namespace std;

void arbol::insertar(tarbol &aux,int v){
 if(aux==NULL){
  aux=new nodo(v);
 }
 else{
  if(v<aux->dato){
   insertar(aux->izquierda,v);
  }
  else{
   if(v>aux->dato){
    insertar(aux->derecha,v);
   }
  }
 }
}

void arbol::ind(tarbol aux){
 if(aux!=NULL){
  ind(aux->izquierda);
  cout<<" num :  "<<aux->dato<<endl;
  ind(aux->derecha);
 } 
 
}

void arbol::nid(tarbol aux){
 if(aux!=NULL){
  cout<<" num :  "<<aux->dato<<endl;
  nid(aux->izquierda);
  nid(aux->derecha);
 }

}
void arbol::idn(tarbol aux){
 if(aux!=NULL){
  idn(aux->izquierda);
  idn(aux->derecha);
  cout<<" num :  "<<aux->dato<<endl;
 }
}

int main(){
 arbol a;
 cout<<"Datos: 5,4,2,6,7"<<endl<<endl;
 a.insertar(a.miarbol,5);
 a.insertar(a.miarbol,4);
 a.insertar(a.miarbol,2);
 a.insertar(a.miarbol,6);
 a.insertar(a.miarbol,7);
 cout<<"Inorden"<<endl<<endl;
 a.ind(a.miarbol);
 cout<<endl<<endl;
 cout<<"Postorden"<<endl;
 a.idn(a.miarbol);
 cout<<endl<<endl;
 cout<<"Preorden"<<endl;
 a.nid(a.miarbol);
 cout<<endl<<endl;fflush(stdin);
 system("pause");
 return 0;
}

Arbol.h


class nodo{
public: 
 int dato;
  nodo *izquierda;
  nodo *derecha;
  nodo(int v,nodo *iz=NULL,nodo *de=NULL){
   dato=v;
   izquierda=iz;
   derecha=de;
  }
class arbol;
};
typedef nodo *tarbol;

class arbol{
public:
 tarbol miarbol;
 arbol(){
  miarbol=NULL;
 }
 void arbol::insertar(tarbol &aux, int v);
 void ind(tarbol aux);
 void nid(tarbol aux);
 void idn(tarbol aux);
};



Descarga el codigo desde aqui.