El método de
ordenación por selección consiste en repetir los siguientes pasos:
Se busca el
elemento más pequeño del array y se coloca en la primera posición.
Entre los
restantes, se busca el elemento más pequeño y se coloca en la segunda posición.
Entre los
restantes se busca el elemento más pequeño y se coloca en la tercera posición.
……..
Este proceso se
repite hasta colocar el último elemento.
De forma
gráfica el proceso sería el siguiente:
Array original a
ordenar: [50, 26, 7, 9, 15, 27]El método de ordenación por selección en java para ordenar un array de enteros A es el siguiente:
//método java de ordenación por selección
public static void seleccion(int A[]) {
int i, j, menor, pos, tmp;
for (i = 0; i < A.length - 1; i++) { // tomamos como menor el primero
menor = A[i]; // de los elementos que quedan por ordenar
pos = i; // y guardamos su posición
for (j = i + 1; j < A.length; j++){ // buscamos en el resto
if (A[j] < menor) { // del array algún elemento
menor = A[j]; // menor que el actual
pos = j;
}
}
if (pos != i){ // si hay alguno menor se intercambia
tmp = A[i];
A[i] = A[pos];
A[pos] = tmp;
}
}
}
El tiempo de ejecución del algoritmo de ordenación por selección es del orden O(n2)
like me sirvio muchisimo :D
ResponderEliminarMe alegro de que te haya sido útil. Gracias
ResponderEliminarMe sirvio de mucho tengo una pregunta como seria si en lugar de uzar arrays, necesito el metodo pero con LISTAS DOBLEMENTE ENLAZADAS
ResponderEliminarme sirvio de mucho... manito arriba
ResponderEliminarmuchas gracias me sirvio
ResponderEliminarno me sirvio marca muchos errores,,,,,,
ResponderEliminarimport java.util.Scanner;
Eliminarclass ordenSeleccion{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int temp;
int[] numeros=new int[5];
System.out.println("llenando arreglo");
for(int i=0;i<numeros.length;i++){
System.out.println("digite dato entero numero:-- " + i );
numeros[i]=sc.nextInt();
}
System.out.println("el orden original:....");
for(int i=0;i<numeros.length;i++){
System.out.println(i + " : " + numeros[i]);
}
System.out.println("ordenando por seleccion");
for(int i=0;i<numeros.length-1;i++){
int minimo=i;
for(int j=i+1;j<numeros.length;j++){
if(numeros[j]<numeros[minimo]){
minimo=j;
}
}
temp=numeros[i];
numeros[i]=numeros[minimo];
numeros[minimo]=temp;
}
System.out.println("orden correcto:...");
for(int i=0;i<numeros.length;i++){
System.out.println(i + " : " + numeros[i]);
}
}
}
Luis, el metodo seleccion ordena el arreglo, buscando el elemnto mas pequeño y lo coloca al comeinzo y asi sucesivamente hasta llegar a completar la operacion; Mi duda es, como cambiarias el codigo el para que busque PRIMERO EL MAYOR ELEMENTO Y LO COLOQUE AL FINAL ASI HASTA LLEGAR A ORDENARLO; osea la opeacion pero al reves ¡¿?¿? me lo po}drias masnda¡? (kennymezach@gmail.com) ...Gracias
EliminarLuis como podría hacerlo ascendente y descendiente
EliminarSolo tienes que cambiar el comparador, < por >, y ahora si quieres que sea opcional solo sería agregarle un parámetro boolean a la función que indique de forma quiero que lo haga.
Eliminarsabes como sacar el caso mejor y peor ???
ResponderEliminargracias desde venezuela en mi netbeans 7.4 funciona de maravilla
ResponderEliminarGracias por el comentario Gabriel y Saludos a Venezuela ;)
EliminarÉste creo que es algo distinto al suyo. Funciona bien.
ResponderEliminarpublic static int[] seleccion(int[] tabla) {
int menor;
int aux;
for (int i=0; i<tabla.length-1; i++) {
menor = tabla[i];
for (int j=i+1; j<=tabla.length-1; j++) {
if (tabla[j] < menor) {
aux = tabla[j];
tabla[j] = menor;
menor = aux;
}
}
tabla[i] = menor;
}
return tabla;
}
public static void main(String[] args) {
int[] tabla = {5,78,2,3,1,25,7,1,90,8,1,45};
int[] nuevaTabla = seleccion(tabla);
for (int i=0; i<nuevaTabla.length; i++) {
System.out.println(nuevaTabla[i]);
}
}
gracias amigo , me haz ayudsado con ese codigo
Eliminargracias amigo , me haz ayudsado con ese codigo
Eliminarselección por ordenación es lo mismo q inserción directa??
ResponderEliminarnecesito ordenar este array en orden acendente prodria alguien porfavor ayudarme
ResponderEliminarimport java.util.*;
public class ArrayAlex {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Variables
int Promedio;
int i;
//Array
int[] Vect = new int[10];
//lectura de datos y llenar el array
System.out.println("Lectura de los Numeros del Array: ");
for (i = 0; i < 10; i++) {
System.out.print("Numero[" + i + "]= ");
Vect[i] = sc.nextInt();
}
Promedio=Vect[9]+Vect[8]+Vect[7]+Vect[6]+Vect[5]+Vect[4]+Vect[3]+Vect[2]+Vect[1]+Vect[0]/10;
//Decendente
System.out.println("Orden Decendente:");
System.out.println(Vect[9] +" "+ Vect[8] +" "+ Vect[7] +" "+ Vect[6] +" "+ Vect[5] +" "+ Vect[4] +" "+ Vect[3] +" "+ Vect[2] +" "+ Vect[1] +" "+ Vect[0]);
//Acendente
System.out.println("Orden Acendente:");
System.out.println(Vect[0] +" "+ Vect[1] +" "+ Vect[2] +" "+ Vect[3] +" "+ Vect[4] +" "+ Vect[5] +" "+ Vect[6] +" "+ Vect[7] +" "+ Vect[8] +" "+ Vect[9]);
//Mayor
System.out.println("Numero Mayor:");
System.out.println(Vect[9]);
//Menor
System.out.println("Numero Menor:");
System.out.println(Vect[0]);
//Promedio
System.out.println("Promedio:");
System.out.println(Promedio);
}
}
Funciona perfecto :D
ResponderEliminarcuantas pasadas tiene ?
ResponderEliminarMe lo puedes hacer en recursivo por favor :v
ResponderEliminarbuenas noches alguien me puede ayudar a ver que tipo de modelo de ordenamiento (seleccion, burbuja, rapido, insercion) utiliza y que cambios tengo que hacerle para ejecutarlo correctamente, de antemano gracias
ResponderEliminarpackage metodo;
/**
*
* @author SERAFSC
*/
public class Metodo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int Arrl[]={1,2,3,4,5,6,7,8,9,10};
int n=3;
int pinic=0;
int pfin=arrl.length-1;
int pmedio;
while(pinic<=pfin){
pmedio=(pfin+pinic)/2;
if(arrl[pmedio] == n){
System.out.println("el dato está entre"+pinic+" y "+pfin);
breack;
}else if(n<arrl[pmedio]){
pfin = pmedio-1;
}else {
pinic = pmedio +1;
}
}
}
}
quien me hace el favor de explicarme este ejemplo
ResponderEliminar
ResponderEliminarImplementar un programa para ingresar n elementos en un arreglo del tipo String,
reportar el arreglo ordenado alfabéticamente siguiendo el método de selección.
aca el metodo:
Eliminarprivate static void metododeSeleccion(String [] palabras){
int i, j, pos;
String menor, aux;
for(i=0;i<palabras.length-1;i++){
menor=palabras[i];
pos=i;
for(j=i+1;j<palabras.length;j++){
if(palabras[j].compareTo(menor)<0){ //compara si palabras[j] es menor que la variable "menor"
menor=palabras[j];
pos=j;
}
}
if(pos!=i){
aux=palabras[i];
palabras[i]=palabras[pos];
palabras[pos]=aux;
}
}
for(String s: palabras){
System.out.print(s + " ");
}
}
Una pregunta, como puedo hacer muestre el menor arriba y el mayor abajo
ResponderEliminarURGENTE quien puede pasarme codigo de ordenamiento por seleccion en java que guarde los tiempos en una tabla y que grafique para saber que tipo de orden es y que sea grafico xfa, es para una tarea...... y si se puede que sea para mañana..
ResponderEliminarAYUDA....Se desea implementar una solución que permita al usuario ingresar el tamaño del arreglo y los elementos al mismo, así como seleccionar entre varias opciones de salida del problema. Para la solución del problema el usuario podrá seleccionar entre las siguientes opciones:
ResponderEliminara. Ordenamiento de los elementos por el método de burbuja
b. Ordenamiento de los elementos por el método de inserción
c. Ordenamiento de los elementos por el método de selección
pobre
EliminarMe piden un metodo de ordenacion por inserccion en hava especificamente en netbeans con metodos
ResponderEliminar