InicioApuntes Y MonografiasOrdenamiento de numeros y cadenas.
Ordenamiento de distintos tipos de datos con 4 algoritmos diferentes, con resultados de tiempo.
Tiene fallos con las cadenas, pero los numero funcionan 100%, sugerancia parqa hacerlo
con tipos de datos struct??-

la carit " se sustituye por " y ) sin espacio.



#include <stdio.h>
#include <string.h>
#include <time.h>

#define tam 5
#define lon 10

void leerv(int a[], int n){
int i;
/*
printf("nRellena el vector con %d elementos por favor.n", n);
fflush(stdin);
for(i=0 ; i<n ; i++)
scanf("%d", &a);
*/

srand(time(NULL));
for(i=0 ; i<n ; i++)
a=rand() % 100;
}

void tiempo(clock_t comienzo){
printf("nTiempo que tardo el algoritmo: %f seg.n", (clock()-comienzo)/(float)CLOCKS_PER_SEC );
}

void escrv(int a[], int n, clock_t comienzo){
int i;
printf("nLos elementos del vector son:n";
for(i=0 ; i<n ; i++)
printf("n%d", a);
tiempo(comienzo);
}

void burbEnt(int a[], int n, int mode){
int i, j, aux, flag=1;
if(mode==1){
for(i=0 ; i<n-1 && flag; i++){
flag=0;
for(j=0 ; j<n-i-1 ; j++)
if(a[j] > a[j+1]){
flag=1;
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
else{
for(i=0 ; i<n-1 && flag ; i++){
flag=0;
for(j=0 ; j<n-i-1 ; j++){
if(a[j] < a[j+1]){
flag=1;
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
}
}

void selEnt(int a[], int n, int mode){
int i, j, aux, indice;
if(mode==1){
for(i=0 ; i<n-1 ; i++){
indice=i;
for(j=0 ; j<n ; j++)
if(a > a[j])
indice=j;
if(indice!=i){
aux=a[j];
a[j]=a;
a=aux;
}
}
}
else{
for(i=0 ; i<n-1 ; i++){
indice=i;
for(j=i+1 ; j<n ; j++)
if(a < a[j])
indice=j;
if(indice!=i){
aux=a;
a=a[j];
a[j]=aux;
}
}
}
}

void intEnt(int a[], int n, int mode){
int i, j, aux;
if(mode==1){
for(i=0 ; i<n-1 ; i++){
for(j=i+1 ; j<n ; j++){
if(a > a[j]){
aux=a[j];
a[j]=a;
a=aux;
}
}
}
}
else{
for(i=0 ; i<n-1 ; i++){
for(j=i+1 ; j<n ; j++){
if(a < a[j]){
aux=a[j];
a[j]=a;
a=aux;
}
}
}
}
}

void quickEnt(int a[], int inicio, int final, int mode){
int i, j, central, pivote, aux;
central=(inicio+final)/2;
pivote=a[central];
i=inicio;
j=final;
do{
while(a < pivote) i++;
while(a[j] > pivote) j--;
if(i<=j){
aux=a[j];
a[j]=a;
a=aux;
i++;
j--;
}
}while(i<=j);
if(inicio < j)
quickEnt(a, inicio, j, mode);
if(i < final)
quickEnt(a, i, final, mode);
}

void leerm(char m[tam][lon], int n){
int i;
printf("nEscribe %d palabras, separadas por la tecla "Intro"n", n);
fflush(stdin);
for(i=0 ; i<n ; i++)
scanf("%s", m);
}

void escrm(char m[tam][lon], int n, clock_t comienzo){
int i;
printf("nEl contenido de la matriz es:n";
for(i=0 ; i<n ; i++)
printf("n%s", m);
tiempo(comienzo);
}

void intStr(char m[tam][lon], int n, int mode){
int i, j, flag=1;
char aux[lon];
if(mode==1){
for(i=0 ; i<n-1 ; i++){
for(j=i+1 ; j<n ; j++){
if(strcmp(m, m[j]) > 0){
strcpy(aux, m);
strcpy(m, m[j]);
strcpy(m[j], aux);
}
}
}
}
else{
for(i=0 ; i<n-1 ; i++){
for(j=i+1 ; j<n ; j++){
if(strcmp(m, m[j]) < 0){
strcpy(aux, m);
strcpy(m, m[j]);
strcpy(m[j], aux);
}
}
}
}
}

void selStr(char m[tam][lon], int n, int mode){
int i, j, indice;
char aux[lon];
for(i=0 ; i<n-1 ; i++){
indice=i;
for(j=0 ; j<n ; j++){
if((strcmp(m, m[j])) > 0){
indice=j;
}
}
if(indice!=i){
strcpy(aux, m[j]);
strcpy(m[j], m);
strcpy(m, aux);
}
}
}

void quickStr(char m[tam][lon], int left, int right, int modo){
int i, j, central=(left+right)/2;
char aux[lon], pivote[lon];
i=left;
j=right;
strcpy(pivote, m[central]);
do{
while((strcmp(m, pivote) < 0))
i++;
while((strcmp(m[j], pivote) > 0))
j--;
if( i<=j){
strcpy(aux, m);
strcpy(m, m[j]);
strcpy(m[j], aux);
i++;
j--;
}
}while(i<=j);
if(left<j)
quickStr(m, left, j, modo);
if(i<right)
quickStr(m, i, right, modo);
}

void menu(){
int opc, alg, a[tam], modo;
char m[tam][lon];
clock_t comienzo;
int tamano=100000;
int bench[tamano];
system("cls";
system("color b1";
printf("Programa para ordenacion por diferentes algoritmosnn";
printf("t.:Tip de dato:.n";
printf("1.-Enteros.n";
printf("2.-Cadenas.n";
printf("3.-Benchmarkn";
printf("4.-Salir.n";
do{
printf("Que ordenará: ";
scanf("%d", &opc);
}while(opc<1 || opc>4);
switch(opc){
case 3:
leerv(bench, tamano);
printf("nOrdenar %d elementos tarda:", tamano);
comienzo=clock();
burbEnt(bench, tamano, 1);
printf("nBurbuja: %f seg.", (clock()-comienzo)/(float)CLOCKS_PER_SEC );
comienzo=clock();
selEnt(bench, tamano, 1);
printf("nSeleccion: %f seg.", (clock()-comienzo)/(float)CLOCKS_PER_SEC );
comienzo=clock();
intEnt(bench, tamano, 1);
printf("nIntercambio: %f seg.", (clock()-comienzo)/(float)CLOCKS_PER_SEC );
comienzo=clock();
quickEnt(bench, 0, tamano-1, 1);
printf("nQuicksort: %f seg.", (clock()-comienzo)/(float)CLOCKS_PER_SEC );
puts("nn";
system("pause";
menu();
case 4:
exit(-1);
}
printf("nt.:Algoritmo:.";
printf("n1.-Burbuja.";
printf("n2.-Seleccion.";
printf("n3.-Intercambio";
printf("n4.-Quicksort";
do{
printf("nQue algoritmo utilizará: ";
scanf("%d", &alg);
}while(alg<1 ||alg>4);
printf("nt.:Modo:.";
printf("n1.-Ascendenten2.-Descendente";
do{
printf("nComo se ordenará: ";
scanf("%d", &modo);
}while(modo<1 || modo>2);

switch(opc){
case 1:
leerv(a, tam);
comienzo=clock();
switch(alg){
case 1:
burbEnt(a, tam, modo);
break;
case 2:
selEnt(a, tam, modo);
break;
case 3:
intEnt(a, tam, modo);
break;
case 4:
quickEnt(a, 0, tam-1, modo);
}
escrv(a, tam, comienzo);
break;
case 2:
leerm(m, tam);
comienzo=clock();
switch(alg){
case 1:
//burbStr(m, tam, modo);
break;
case 2:
selStr(m, tam, modo);
break;
case 3:
intStr(m, tam, modo);
break;
case 4:
quickStr(m, 0, tam-1, modo);
}
escrm(m, tam, comienzo);
}
puts("nn";
system("pause";
menu();
}

main(){
menu();
}
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

h
hector5122🇦🇷
Usuario
Puntos0
Posts12
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.