English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Breve sommario degli algoritmi di ordinamento degli array comuni in Java

Questo esempio spiega i metodi di ordinamento comuni degli array in Java. Condivido con tutti per riferimento, come segue:

1、Metodo di ordinamento a bollebole

SortArray_01.java

public class SortArray_01 {
    public static void main(String args[]) {
        int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55, 66, 22 };
        // Creazione di un array uno-dimensionale inizializzato array
        System.out.println("Array non ordinato:");
        for (int i = 0; i < array.length; i++) {
            // Percorso degli elementi dell'array array
            System.out.print(" " + array[i]);
            // Output degli elementi dell'array
            if ((i + 1) % 5 == 0)
                // Ogni 5 elementi per riga
                System.out.println();
        }
        int mid; // Definire una variabile intermedia, che serve per il临时存储 dati
        for (int i = 0; i < array.length; i++) {
            // Esecuzione del metodo di ordinamento a bollebole
            for (int j = i; j < array.length; j++) {
                if (array[j] < array[i]) {
                    mid = array[i];
                    array[i] = array[j];
                    array[j] = mid;
                }
            }
        }
        System.out.println("\nArray ordinato con il metodo di bollebole:");
        for (int i = 0; i < array.length; i++) {
            // Esplorazione degli elementi dell'array array ordinato
            System.out.print(" " + array[i]);
            // Output degli elementi dell'array
            if ((i + 1) % 5 == 0)
                System.out.println();
            // Ogni 5 elementi per riga
        }
    }
}

Risultato dell'esecuzione:

Array non ordinato:
 14 5 86 4 12
 3 21 13 11 2
 55 66 22
Array ordinato con il metodo di bollebole:
 2 3 4 5 11
 12 13 14 21 22
 55 66 86

2、Ordinamento crescente dell'array

SortArray_02.java

import java.util.Arrays;
import java.util.Random;
public class SortArray_02 {
    public static void main(String[] args) {
        Random rd = new Random();
        int[] array = new int[15];
        // Dichiarazione dell'array
        System.out.println("Prima dell'uso del metodo sort:");
        for (int i = 0; i < array.length; i++) {
            // Utilizzare numeri casuali per generare 15 numeri casuali tra 0 e 20
            array[i] = rd.nextInt(20);
            // Assegna un valore all'array array
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
        Arrays.sort(array);
        // Ordina l'array array in ordine crescente
        // Stampa l'array dopo l'uso del metodo sort
        for (int i = 0; i < array.length; i++) {
            // Stampa i dati dell'array array
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
    }
}

Risultato dell'esecuzione:

Array prima dell'uso del metodo sort:
 13 12 11 18 11
 11 17 13 11 8
 1 0 9 18 3
Array dopo l'uso del metodo sort:
 0 1 3 8 9
 11 11 11 11 12
 13 13 17 18 18

3、Metodo di ordinamento rapido

SortArray_03.java

public class SortArray_03 {
    public static void main(String args[]) {
        int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15, 88, 23 };
        System.out.println("Array prima dell'ordinamento:");
        for (int i = 0; i < intArray.length; i++) {
            System.out.print(" " + intArray[i]);
            // Output degli elementi dell'array
            if ((i + 1) % 5 == 0)
                // Ogni 5 elementi per riga
                System.out.println();
        }
        System.out.println();
        int[] b = quickSort(intArray, 0, intArray.length - 1);
        // Chiamare quickSort
        System.out.println("Array ordinato con il metodo quickSort:");
        for (int i = 0; i < b.length; i++) {
            System.out.print(" " + b[i]);
            if ((i + 1) % 5 == 0)
                // Ogni 5 elementi per riga
                System.out.println();
        }
    }
    public static int getMiddle(int[] array, int sinistra, int destra) {
        int temporaneo;
        // Eseguire una rapida ordinazione, restituire la posizione del centro
        int centro = array[sinistra];
        // Mettere il centro in a[0]
        while (sinistra < destra) {
            while (sinistra < destra && array[destra] >= centro)
                destra--;
            temp = array[right];
            // Spostare i dati più piccoli del punto centrale a sinistra
            array[right] = array[left];
            array[left] = temp;
            while (sinistra < destra && array[sinistra] <= centro)
                left++;
            temp = array[right];
            // Spostamento dei dati maggiori del punto centrale a destra
            array[right] = array[left];
            array[left] = temp;
        }
        array[left] = mid;
        // Spostamento del centro nella posizione corretta
        return left; // Restituisce il punto centrale
    }
    public static int[] quickSort(int[] array, int left, int right) { // Metodo di ordinamento rapido
        if (left < right - 1) {
            // Se i punti di inizio e fine non si sovrappongono, ossia i puntatori non hanno raggiunto la fine
            int mid = getMiddle(array, left, right);
            // Nuovo recupero del punto centrale
            quickSort(array, left, mid - 1);
            quickSort(array, mid + 1, right);
        }
        return array;
    }
}

Risultato dell'esecuzione:

Array prima dell'ordinamento:
 12 11 45 6 8
 43 40 57 3 20
 15 88 23
Array dopo l'ordinamento con il metodo quicksort:
 3 6 8 11 12
 20 15 23 40 43
 45 88 57

4. Metodo di selezione

SortArray_04.java

public class SortArray_04 {
    public static void main(String args[]) {
        int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6, 45, 34 };
        // Creazione di un array uno-dimensionale inizializzato array
        int keyValue; // Rappresenta il valore minimo
        int index; // Rappresenta l'indice del valore minimo
        int temp; // Variabile intermedia
        System.out.println("Array non ordinato:");
        for (int i = 0; i < array.length; i++) {
            // Percorso degli elementi dell'array array
            System.out.print(" " + array[i]);
            // Output degli elementi dell'array
            if ((i + 1) % 5 == 0)
                // Ogni 5 elementi per riga
                System.out.println();
        }
        for (int i = 0; i < array.length; i++) {
            // Utilizzo del nucleo dell'algoritmo di selezione
            index = i;
            keyValue = array[i];
            per int j = i; j < array.length; j++)
                se (array[j] < keyValue) {
                    index = j;
                    keyValue = array[j];
                }
            temp = array[i];
            array[i] = array[index];
            array[index] = temp;
        }
        System.out.println("\nArray dopo l'ordinamento con il metodo di selezione:");
        for (int i = 0; i < array.length; i++) {
            // Esplorazione degli elementi dell'array array ordinato
            System.out.print(" " + array[i]);
            // Output degli elementi dell'array
            if ((i + 1) % 5 == 0)
                System.out.println();
            // Ogni 5 elementi per riga
        }
    }
}

Risultato dell'esecuzione:

Array non ordinato:
 14 5 86 4 12
 3 51 13 11 2
 32 6 45 34
Array dopo l'ordinamento con il metodo di selezione:
 2 3 4 5 6
 11 12 13 14 32
 34 45 51 86

PS: vi consiglio un altro strumento di visualizzazione dell'ordinamento per il vostro riferimento:

Strumento di visualizzazione animata online per la dimostrazione del processo di ordinamento degli algoritmi di inserimento, selezione, bolle, fusione, Shell e quicksort:
http://tools.jb51.net/aideddesign/paixu_ys

Per coloro che sono interessati a ulteriori contenuti su algoritmi Java, possono consultare la sezione speciale del nostro sito: 'Tutorial Java su Strutture Dati e Algoritmi', 'Riassunto delle tecniche di manipolazione dei nodi DOM in Java', 'Riassunto delle tecniche di manipolazione dei file e delle directory in Java' e 'Riassunto delle tecniche di gestione della cache in Java'.

Spero che il contenuto di questo articolo possa essere utile per la progettazione di programmi Java.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il diritto d'autore è dell'autore originale, il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente, il sito web non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web rimuoverà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare