
Quicksort c++
Publicado por oweer (2 intervenciones) el 28/10/2014 05:54:09
Hola gente, tengo un codigo en el que ocupo ayuda. Estoy trabajando en el codigo quicksort a la ves es Bidimensional o mejor dicho, matriz.
quiero que me ordene las filas, pero me hace mal el ordenamiento
aqui les dejo el codigo, este muy contento ante cualquier ayuda
quiero que me ordene las filas, pero me hace mal el ordenamiento
aqui les dejo el codigo, este muy contento ante cualquier ayuda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include<time.h>
#include<stdlib.h>
#define f 5
#define c 5
using namespace std;
void relleno(int r[][c]);
void impresion(int im[][c]);
//funciones quicsort
void quicsort(int lista[][c],int n);
void qs(int lista[][c],int limite_izq,int limite_der);
int main(int argc, char *argv[]) {
int tabla[f][c]={{0},{0}};
relleno(tabla);
impresion(tabla);
quicsort(tabla,f);//llamado a quicsort
cout<<"\n\n";
impresion(tabla);
//return 0;
}
//FUNCIONES//
void quicsort(int lista[][c],int n)
{
qs(lista,0,n-1);
}
void qs(int lista[][c],int limite_izq,int limite_der)
{
int izq,der,temporal,pivote[f]={0};
for (int i=0;i<f;i++)
{
//asignacion de las variables en cada ciclo
der=limite_der; //1
izq=limite_izq;
//////////////////////////////////
pivote[i]=lista[i][(izq+der)/2];
do{
while(lista[i][izq]<pivote[i] && izq<limite_der)
izq++;
while(pivote[i]<lista[i][der] && der>limite_izq)
der--;
if (izq<=der)
{
temporal=lista[i][izq];
lista[i][izq]=lista[i][der];
lista[i][der]=temporal;
izq++;
der--;
}
}while(izq<=der);
}
}
//IMPRESION Y RELLENOS
void relleno(int r[][c])
{
srand ((unsigned) time(NULL));
for(int i=0;i<f;i++)
{
for (int j=0;j<=c;j++)
r[i][j]=rand()%c;
}
}
void impresion(int im[][c])
{
for(int i=0;i<f;i++)
{
for (int j=0;j<=c;j++)
cout<<im[i][j]<<" ";
cout<<endl;
}
return;
}
Valora esta pregunta


0