2. Complejidad espacial (cont.)
• La unidad para medir la complejidad en
memoria es la palabra de memoria
(típicamente una palabra es de 32 bits o 64
bits).
• A continuación determinaremos los costos de
distintos tipos de datos:
3. Costos de cada tipo de dato
a) Si T es un tipo elemental Cm(T)=1.
b) Un string de tamaño n ocupa
Cm(string(n))=n/4.
c)Arreglo unidimensional de n elementos
Tipo Arr[n] Cm(Arr)=n*Cm(Tipo)
d)Arreglo bidimensional de n*m elementos
Tipo Mat[n][m] Cm(Mat) = n*m*Cm(Tipo)
5. void burbuja(int *k){
int b;
for (int x = 0; x<t; x++){
for (int y = 0; y<(t - 1); y++){
if (k[y]>k[y + 1]){
b = k[y];
k[y] = k[y + 1];
k[y + 1] = b;
}
}
muestraArr(k,t);
}
}
6. int inicial(int *o, int c){
int p = c;
int d = o[c];
for (int h = c; h<t; h++){
if (o[h]<d){
d = o[h];
p = h;
}
}
return p;
}
void seleccion(int *k){
int m, pos_m;
for (int l = 0; l<(t - 1); l++){
pos_m = inicial(k, l);
if (k[l]<k[pos_m]){
m = k[l];
k[l] = k[pos_m];
k[pos_m] = m;
}
muestraArr(k,t);
}
}
7. int inicial(int *o, int c){
int p = c;
int d = o[c];
for (int h = c; h<t; h++){
if (o[h]<d){
d = o[h];
p = h;
}
}
return p;
}
void insercion(int *k){
int m, pos_m;
for (int l = 0; l<(t - 1); l++){
pos_m = inicial(k, l);
if (k[l]>k[pos_m]){
m = k[pos_m];
for (int g = pos_m - 1; g >= 1; g--){
k[g + 1] = k[g];
}
k[l] = m;
}
muestraArr(k,t);
}
}
8. Responde
• Con base a la entrada de “t” datos:
– ¿Cuál es el costo en memoria del ordenamiento
burbuja?
– ¿Cuál es el costo en memoria del ordenamiento
de inserción?
– ¿Cuál es el costo en memoria del ordenamiento
de selección?
– ¿Cuál es el que ocupa menos memoria, cuál es el
que ocupa más?