Autor
|
Tema: ahorrar lineas de codigo (Leído 3,208 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos tengo el siguiente codigo que me hace un simple ordenamiento burbuja de un vector: int main() { int v[MAX],i,j,n,aux,; printf("Dame el numero de elementos del vector\n"); for(i=0;i < n;i++) { printf("Dame el elemento numero %d:\n",i +1); } for(i=1;i < n;i++) { for(j=0;j < n-i;j++) { if(v[j] > v[j+1]) { aux = v[j+1]; v[j+1] = v[j]; v[j] = aux; } } } return 0; }
pero tengo la duda de si en vez de usar dos fors podria meter el metodo de ordenamiento en el for que me pide que ingrese los elementos del vector para ahorrar lineas de codigo gracias
|
|
|
En línea
|
|
|
|
engel lex
|
no, necesitas 2 for porque buble sort es de tiempo exponencial... el por ley tiene que pasar n veces por cada uno de sus n miembros... de los algoritmos de ordenamiento buble sort a pesar de ser el de más simple implementacion, es el más lento de todos
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
En C++ hay una forma más corta usando la función sort: #include <iostream> #include <algorithm> #include <vector> using namespace std; const int n = 10; int main() { vector<int> Numeros; int aux; for(int i=0;i < n;i++) { cout<<"Dame el elemento numero "<<i+1<<": "<<endl; cin>>aux; Numeros.push_back(aux); } sort(Numeros.begin(),Numeros.end()); // Ordenar desde el principio al final return 0; }
Aparte de eso, no se me ocurre ninguna forma de acortar tu código. Como mucho podrías sacar el mayor número del vector, pero eso no te serviría para ahorrar código.
|
|
« Última modificación: 25 Junio 2013, 21:45 pm por amchacon »
|
En línea
|
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola. Si usas C y tenés que aplicar el método de la burbuja si o si, podes ahorrar un ciclo en el ordenamiento y la variable auxilar de este modo: int main() { int v[MAX]; int i, n; printf("Dame el numero de elementos del vector: "); for(i=0;i < n;i++) { printf("\nDame el elemento numero %d:",i +1); } for (i=0; i < n; i++) { if (i < 1) continue; if (v[i] < v[i-1]) { v[i] ^= v[i-1]; v[i-1] ^= v[i]; v[i] ^= v[i-1]; i = 0; } } ... }
Pero, al menos yo, no veo manera de mezclar el ingreso de datos con el ordenamiento. Saludos.
|
|
« Última modificación: 25 Junio 2013, 23:18 pm por ecfisa »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
tengo la duda de si en vez de usar dos fors podria meter el metodo de ordenamiento en el for que me pide que ingrese los elementos del vector para ahorrar lineas de codigo Puedes combinar la ordenacion y la entrada de datos para reducir el numero de lineas pero, como ya te comentaron, eso no afecta el rendimiento del algoritmo. Por ejemplo: #include <stdio.h> #include <stdlib.h> #define MAX_ELEM 16U void swap(int *p, int *q); int main(void) { int num[MAX_ELEM]; unsigned num_elem; unsigned i; unsigned j; printf("Numero de elementos del vector: "); if (scanf("%u", &num_elem ) != 1 || num_elem > MAX_ELEM ) return EXIT_FAILURE; for (i = 0; i < num_elem; i++){ printf("Valor del elemento %d: ", i + 1); if (scanf("%d", num + i ) != 1) return EXIT_FAILURE; for (j = i; j > 0 && num[j] < num[j - 1]; j--) swap(num + j, num + j - 1); } for (i = 0; i < num_elem; i++) return EXIT_SUCCESS; } void swap(int *p, int *q) { int aux; aux = *p; *p = *q; *q = aux; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Lineas de código valoradas en millones
« 1 2 »
Foro Libre
|
Mafmaestro
|
12
|
6,047
|
17 Julio 2013, 23:29 pm
por Mafmaestro
|
|
|
[SOURCE] Advanced Cloc: Lector de líneas de código
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
4
|
4,384
|
9 Enero 2014, 15:06 pm
por z3nth10n
|
|
|
Cada año se crean 5.000 millones de líneas de código COBOL
Noticias
|
wolfbcn
|
0
|
1,148
|
13 Noviembre 2014, 13:37 pm
por wolfbcn
|
|
|
Codigo en C para saltar lineas
Programación C/C++
|
Jerrytoon
|
3
|
2,586
|
28 Enero 2015, 23:37 pm
por sabeeee
|
|
|
Reducir líneas de código
Programación C/C++
|
rarrav26
|
2
|
2,033
|
7 Abril 2015, 20:04 pm
por rarrav26
|
|