Hola! Necesito ayuda... tengo que hacer un programa, y lo primero de todo es ordenar un array, pero no tengo idea de cómo hacerlo...
Me dan un array N con números enteros ordenados de menor a mayor, y un número M.
Se trata de reordenar el array de manera que queden ordenados del más cercano a M hasta el más alejado.
Por ejemplo:
Tengo un array N[]={0,2,3,5,7,10}
Y un número M=3;
Al final quedaría de esta forma: N[]={3,2,5,0,7,10}
Gracias de antemano!! ;)
claro, vos estás diciendo los más cercanos con respecto a la posición, por eso 2,5,0, etc se me ocurren varias maneras, una puede ser obtener la diferencia de cada número con M y ordenar un vector según las diferencias de menor a mayor. Usarías un valor absoluto para las diferencias.
hay otras formas que se me ocurren, fijate esa
Sí, a mi se me ocurrió la misma forma, pero no sé cómo implementarla, por eso lo pregunté aquí
Al utilizar un algoritmo sencillo comparas dos elementos para saber cual es mayor, por ejemplo utilizando BubbleSort:
if (elem[i] > elem[i + 1]){
/* Intercambio */
}
La única modificación que debes hacer es la ya indicada por 85: en lugar de comparar los valores directamente (como en el ejemplo anterior) comparas las diferencias entre los valores y el referente (3 en tu caso). Si suena complicado te aseguro no lo es, solo debes utilizar la función abs (prototipo en <stdlib.h>) y una resta. Siguiendo el ejemplo anterior la comparación cambia a:
if (abs(elem[i] - M) > abs(elem[i + 1] - M)){
/* Intercambio */
}
Un saludo