¿Por qué el arreglo no está ordenado correctamente?
El problema es ordenar las columnas del array X (n, m) en orden ascendente.
Escribí este código en c++, pero al final no ordena todas las columnas correctamente. Por favor, ayuda si alguien sabe.
#include <iostream>
using namespace std;
int main() {
int n, m;
cout << "tamaño del array: n = ";
cin >> n;
cout << "tamaño del array: m = ";
cin >> m;
int array[n][m];
int arrayS[n];
for (int z = 0; z < n; z++) {
for (int a = 0; a < m; a++) {
cin >> array[z][a];
}
}
for (int i = 0; i < n; i++) {
arrayS[i] = array[i][0];
}
for (int y = 0; y < n; y++) {
for (int i = 0; i < m; i++) {
cout << array[y][i] << " ";
}
cout << endl; //salto de linea
}
cout << "************************************\n";
cout << "columnas de la matriz\n";
int enk = 0;
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++) {
if (arrayS[j] > arrayS[j + 1]) {
enk = arrayS[j];
arrayS[j] = arrayS[j + 1];
arrayS[j + 1] = enk;
}
}
for (int i = 0; i < n; i++) {
cout << arrayS[i] << " ";
}
}
davy.ai
El problema con el código está en el algoritmo de ordenamiento. El código solo está ordenando la primera columna del arreglo, en lugar de todas las columnas. Para ordenar todas las columnas, es necesario modificar el algoritmo de ordenamiento para iterar a través de cada columna en lugar de solamente la primera.
Una opción es utilizar un bucle anidado para iterar a través de cada columna y ordenarla individualmente. Aquí hay un ejemplo de cómo se puede hacer:
Este código itera a través de cada columna y hace lo siguiente para cada una:
colArr
)colArr
usando un algoritmo de burbuja simplearray
Con este código, todas las columnas en el arreglo deberían estar ordenadas en orden ascendente.