-
ok, muchas gracias, esperare a despues del fin de semana, a ver si me podeis mandar lo que tengais…
Muchas gracias a todos.
CIAO
-
JomNel te mando ahora a tu mail el algoritmo en pseudocodigo.
-
http://www.dsic.upv.es/~jorallo/libro_c++/fuentes/ej10_09.cpp
Esa es una manera que me he encontrado por internet, mira si te vale, si no avisa y ya te lo paso de pascal a C.
-
me cagon la put… es 99% igual al que he implementado, y ademas es de alguien de mi universidad (upv--> universidad politecnica de valencia) si es que no pue ser....
gracias.
CIAO
P.D Aun así mandadme lo que tengais, y así intentare optmizarlo.
-
Retomo la rama…
... pues no consigo que me funcione al 100%, hay un fallo y no hay forma de dar con el, estoy a punto de abandonar...
si algun alma caritativa esta dispuesta a pegarle un vistazo que me lo diga y le mando el archivo con el codigo por correo electronico.
Gracias.
CIAO -
por cierto, tú no serás de la facultad…<br /><br />----------------------------------------------------------------------<br />template<typename T> <br />void insdirecta(T *v, int ini, int fin)<br />{<br /> int i,j;<br /> T aux;<br /><br /> for (i = ini+1; i <= fin; i++) {<br /> aux=v<em>;<br /> for (j = i-1; j>=ini && aux<v[j]; j–) <br /> v[j+1]=v[j]; <br /> v[j+1]=aux;<br /> }<br />} <br /><br /><br />template<typename T><br />inline void intercambiar(T &px, T &py)<br />{<br /> T aux;<br /> aux = px; px = py; py = aux;<br />}<br /><br />template<typename T><br />void quicksort(T *v, int ini, int fin)<br />{<br /> int izq,der;<br /> T p;<br /><br /> if (ini < fin) {<br /> izq = ini+1; der = fin; p = v[ini];<br /> while (izq<=der) {<br /> if (v[izq]<=p) { izq++; }<br /> else { intercambiar(v[izq],v[der]); der–; }<br /> }<br /> intercambiar(v[ini],v[der]);<br /> quicksort(v,ini,der-1);<br /> quicksort(v,der+1,fin);<br /> }<br />}<br /><br />–--------------------------------------------------------------------</em>
-
==============================================
vector <int>quick(vector <int>vect, int izq, int dcha) {
int i=0, j=0;
int pivote=0, aux=0;
i=izq;
j=dcha;
pivote = vect[(dcha - izq)/2];do {
while (vect _< pivote) {
i++; }while (pivote < vect[j]) {
j–; }if (i <= j) {
aux = vect_;
vect _= vect[j];
vect[j] = aux;
i++;
j–;
}} while (i <= j);
if (izq < j)
quick (vect, izq, j-1);if (i < dcha)
quick (vect, i+1, dcha);return(vect);
}
Este es el que yo tengo implementado, pero lo que no me funciona es la rellamada a la funcion, y no consigo dar con el fallo...
Soy estudiante de Ing. Tec. de Teleco Esp. Sistemas Electronicos en Gandia, si eres tu de alli tambien dilo y nos ponemos en contacto.
CIAO___</int></int>
-
¿Has compilado y trazado? ¿Que te sale? ¿Vector esta definida como una tabla unidimensional? ¿Las llamadas estan bien? ¿No tendrias que poner vector=llamada?
-
yo soy de valencia.
No entiendo pq pones if's al final, ya q quicksort tiene q ejecutarse en las 2 partes del vector.¿Conoces a Emi? Estudia lo que tú, y ahora está de Erasmus en Alemania (no acaba el proyecto ni de conya, menudas fiestas se está pegando)
No te comas la cabeza!!
-
hola.
Por mas que recien he visto tu pedido ,de hace años ,me preguntaba si tenias todavia o si consegiste el programa basado en quicksort en c++,claro,y de forma estructurada,por lo menos con 3 modulos.
avisame please!
gracias