selection sort java selection sort algorithm examples
Aquest tutorial explicarà tot sobre l'ordenació de selecció a Java juntament amb l'algorisme d'ordenació de selecció, el codi Java, la implementació a Java i exemples de Java:
La tècnica d'ordenació de selecció és un mètode en què l'element més petit de la matriu és seleccionat i canviat amb el primer element de la matriu. A continuació, el segon element més petit de la matriu s’intercanvia amb el segon element i viceversa.
=> Consulteu aquí per veure aquí A-Z de tutorials de formació.
Què aprendreu:
Selecció Ordena a Java
D'aquesta manera, l'element més petit de la matriu se selecciona repetidament i es posa a la seva posició correcta fins que s'ordeni tota la matriu.
Es mantenen dues sub-matrius per ordenar la selecció:
- Sub-matriu ordenada: En cada iteració, l'element mínim es troba i es col·loca a la seva posició adequada. Aquesta sub-matriu està ordenada.
- Sub-matriu no classificada: La resta d’elements que no s’ordenen.
El tipus de selecció és una tècnica d’ordenació senzilla i senzilla. La tècnica només consisteix a trobar l’element més petit de cada passada i situar-lo en la posició correcta. El tipus de selecció és ideal per a conjunts de dades més petits, ja que ordena de manera eficient el conjunt de dades més petit.
Per tant, podem dir que no és recomanable la selecció per a llistes de dades més grans.
Algorisme d'ordenació de selecció
A continuació es mostra l’algoritme general per a l’ordenació de selecció:
Ordre de selecció (A, N)
Pas 1 : Repetiu els passos 2 i 3 per K = 1 a N-1
Pas 2 : Rutina de trucades més petita (A, K, N, TPV)
Pas 3 :
Canvia A [K] amb A [POS]
[Fi del bucle]
Pas 4 : SORTIR
Rutina més petita (A, K, N, TPV)
Pas 1 : [inicialitzar] set smallestItem = A [K]
Pas 2 : [inicialitzar] establir POS = K
Pas 3 :
per a J = K + 1 a N -1, repetiu
si més petitItem> A [J]
set smallestItem = A [J]
set POS = J
[si final]
[Fi del bucle]
Pas 4 : tornar TPV
Com podeu veure, es diu la rutina per trobar el nombre més petit mentre es recorre el conjunt de dades. Un cop es troba l’element més petit, es col·loca a la posició desitjada.
com utilitzar fitxers .swf
Pseudocodi per ordenar la selecció
A continuació es dóna el pseudocodi de l'algorisme d'ordenació de selecció.
Procedure selection_sort(array,N) array – array of items to be sorted N – size of array begin for I = 1 to N-1 begin set min = i for j = i+1 to N begin if array[j] Il·lustrem ara l’ordenació d’una matriu mitjançant la selecció.
Exemple d'ordenació de selecció
Penseu en la següent matriu que s’ha d’ordenar com a exemple d’una selecció.
A continuació es mostra una representació tabular per a la il·lustració:
Llista no classificada Element mínim Llista ordenada {17,10,7,29,2} 2 {} {17,10,7,29} 7 {2} {17,10,29} 10 {2,7} {17,29} 17 {2,7,10) {29} 29 {2,7,10,17} {} {2,7,10,17,29}
A la il·lustració, veiem que amb cada passada, el següent element més petit es posa en la seva posició correcta a la matriu ordenada. En general, per ordenar una matriu de N elements, necessitem N-1 passades en total.
Implantació d'ordenació de selecció a Java
Demostrem ara el programa Java per implementar la selecció.
import java.util.*; class Main { static void sel_sort(int numArray[]) { int n = numArray.length; // traverse unsorted array for (int i = 0; i Sortida:
Matriu original: [7, 5, 2, 20, 42, 15, 23, 34, 10]
Matriu ordenada: [2, 5, 7, 10, 15, 20, 23, 34, 42]
A l'exemple de Java anterior, trobem repetidament l'element més petit de la matriu i el posem a la matriu ordenada fins que tota la matriu estigui completament ordenada.
Selecció Ordena la llista enllaçada a Java
A continuació es mostra una llista enllaçada i l’hem d’ordenar mitjançant un ordre de selecció. Per fer-ho utilitzarem l'enfocament recursiu del tipus de selecció. En lloc d’intercanviar la part de dades del node, canviarem els nodes i realinearem els indicadors.
Per tant, si la llista enllaçada es dóna de la següent manera:
A continuació es mostra el programa Java que implementa la classificació anterior.
// add a node to the beginning of the linked list static Node addNode( Node head_ref, int new_data) { // create a node Node newNode = new Node(); // assign data to node newNode.data = new_data; // link the node to linked list newNode.next = (head_ref); //head now points to new node (head_ref) = newNode; return head_ref; } // method to swap nodes static Node swapNodes( Node head_ref, Node curr_node1, Node curr_node2, Node prev_node) { // curr_node2 is new head head_ref = curr_node2; // realign links prev_node.next = curr_node1; // now swap next pointers of nodes Node temp = curr_node2.next; curr_node2.next = curr_node1.next; curr_node1.next = temp; return head_ref; } // sort the linked list using selection sort static Node Selection_Sort( Node head) { // only a single node in linked list if (head.next == null) return head; // minNode => node with minimum data value Node minNode = head; // prevMin => node previous to minNode Node prevMin = null; Node ptr; // traverse the list from head to last node for (ptr = head; ptr.next != null; ptr = ptr.next) { // check if current node is minimum if (ptr.next.data Sortida:
Llista enllaçada original:
7 9 3 5 1 11
Llista enllaçada després de l'ordenació:
1 3 5 7 9 nov
Tingueu en compte que, al programa anterior, hem realignat enllaços dels nodes en lloc d’ordenar només el component de dades del node.
Preguntes freqüents
P # 1) Com funciona l’ordenació de Selection?
Resposta: L’ordenació de selecció funciona mantenint dos sub-matrius. L'element mínim de la matriu subordenada es col·loca a la seva posició correcta en una matriu secundària ordenada. Aleshores, el segon element més baix es col·loca a la seva posició correcta. D'aquesta manera, tota la matriu s'ordena seleccionant un element mínim durant cada iteració.
Q # 2) Quina és la complexitat de la selecció?
Resposta: La complexitat general del tipus de selecció és O (n2), cosa que el converteix en l'algorisme que és ineficient en conjunts de dades més grans. Altres tècniques de classificació són més eficients.
Q # 3) Quins són els avantatges i desavantatges del tipus de selecció?
Resposta: L’ordenació per selecció és la tècnica d’ordenació local i, per tant, no requereix emmagatzematge addicional per emmagatzemar elements intermedis.
Funciona de manera eficient en estructures de dades més petites, així com en conjunts de dades gairebé ordenats.
El principal desavantatge de la tècnica de classificació de selecció és que té un rendiment molt baix a mesura que augmenta la mida de l'estructura de dades. No només es fa més lent, sinó que també disminueix l'eficiència.
Q # 4) Quants intercanvis hi ha a la selecció?
Resposta: La tècnica d'ordenació de selecció requereix el nombre mínim d'intercanvis. En el millor dels casos, quan s’ordena la matriu, el nombre d’intercanvis en l’ordenació de selecció és 0.
Q # 5) La selecció és més ràpida que la classificació per inserció?
Resposta: La classificació per inserció és més ràpida i eficient, a més de estable. L’ordenació de selecció només és més ràpida per a conjunts de dades més petits i estructures parcialment ordenades.
Conclusió
L'ordenació de selecció és una tècnica que funciona seleccionant l'element mínim mentre es recorre la matriu. Per a cada passada / iteració, se selecciona el següent element mínim del conjunt de dades i es col·loca a la seva posició correcta.
La tècnica d'ordenació de selecció funciona de manera eficient quan el nombre d'elements del conjunt de dades és menor, però comença a funcionar malament a mesura que creix la mida del conjunt de dades. Es torna ineficient si es compara amb altres tècniques similars com el tipus d'inserció.
En aquest tutorial, hem implementat exemples per ordenar matrius i llistes enllaçades mitjançant un ordre de selecció.
com programar publicacions d’Instagram de forma gratuïta
=> Visiteu aquí per veure la sèrie d'entrenaments de Java per a tothom.
Lectura recomanada
- Com ordenar una matriu a Java: tutorial amb exemples
- Selecció Ordena en C ++ amb exemples
- Tutorial de longitud de matriu de Java amb exemples de codi
- MongoDB Sort () Mètode amb exemples
- Matriu dentada a Java: tutorial amb exemples
- Ordre d'ordenació Unix amb sintaxi, opcions i exemples
- Inverteix una matriu a Java: 3 mètodes amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java