| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> Programmation Java >> Content
    Comment utiliser un Heapsort en Java
    L'algorithme heapsort est l'un des algorithmes de tri les plus rapides disponibles . Les programmeurs utilisent heapsort en Java parce que c'est un bon choix pour les très grands réseaux qu'ils savent être dans un état non triés. Par souci d'efficacité , la structure réelle de l'arbre n'est pas utilisé. Au lieu de cela , l'arbre est formé en place, à droite dans le tableau. L'algorithme heapsort est «en place» algorithme , car il ne nécessite pas de mémoire supplémentaire pour effectuer le tri . Instructions
    1

    Compose la méthode de swap. Cela échanger deux éléments d'un tableau "" swap public static void ( int [ ] a, int i , int j) {int tmp = a [ j] ; . Un [j] = a [ i ] , un [i] = tmp ; } ""
    2

    écrire le noyau de l'algorithme, la méthode de siftDown . Il est utilisé à la fois à la forme de la structure de tas et de faire le tri réelle.
    3

    Tamiser grandes valeurs vers la racine de l'arbre et des petites valeurs vers les feuilles avec la méthode de siftDown . Comme cette méthode est appelée plusieurs fois pendant le processus de tri , le plus grand nœud est constamment tamisé pour le nœud racine et a déménagé à la fin du tableau . Tout nœud n est jusqu'à deux enfants, dont les indices sont n * 2 + 1 et n * 2 + 2 . "" siftDown public static void ( int [ ] a, int start , int fin ) {int root = commencer , tandis que (racine * 2 + 1 int enfant = racine * 2 + 1; //Si l'enfant a un frère et l' la valeur de l'enfant est inférieure à sa sœur si ( enfant de l'enfant + +; } if ( un swap [ root ] (a, racine , enfant ) ; root = enfant ; } else {return; }} } ""
    4 < p> Utiliser la méthode heapify . Cette méthode est appelée au début de la sorte à créer la structure initiale du tas . Cela se fait rapidement , car la structure de tas est un peu vague . la seule exigence est que chaque nœud racine doit être supérieure à la nœuds enfants "" static void heapify publique (int [] a) { for (int start = a.length /2 - 1 ; start> = 0; commencer - ) . siftDown (a, début , a.length -1 ) ; } ""
    5

    Ecrire la méthode de Heapsort la méthode heapifies premier tableau pour préparer le genre la méthode de siftDown est alors appelé à nouveau depuis le nœud racine est maintenant une faible valeur Ce . . . EIPD une nouvelle grande valeur pour le nœud racine , et l'ensemble du processus est répété jusqu'à ce que la taille du tas est un "" Heapsort public static void (int [] a) { heapify ( a); . for (int fin = a. length - 1 ; end> 1; fin - ) { swap ( a, fin , 0); siftDown (a, 0, fin - 1 );} } ""
    6

    test . la méthode Heapsort l'exemple suivant montre un petit programme de test "" public static void main ( string [] args) {int [] a = new int [ 10]; . for (int i = 0; i for (int i = 0; i swap ( a, i , i + (int) ( Math.random ( ) * ( 9 - i)) ) ; System.out.println (" Avant le tri :"); for (int i = 0; i Heapsort ( a); System.out.println (" Après le tri "); for (int i = 0; } i ""

    Previous :

    next :
      articles connexes
    ·Comment faire pour exécuter VBS Script de Java 
    ·Comment faire Exposants en Java 
    ·Comment puis-je rechercher un fichier créé à l'aide …
    ·Comment formater impression dans les colonnes Lined -up…
    ·Comment utiliser FiltreFichier en Java 
    ·Comment éviter une division par zéro Exception en Jav…
    ·Comment faire pour créer un document Word en Java 
    ·Comment faire pour convertir la chaîne Java à une Inp…
    ·Comment faire pour démarrer une applet Java avec la pl…
    ·Comment impliquer les API Avec Android 
      articles en vedette
    ·Qui a été le 1er programmeur informatique 
    ·Comment afficher plusieurs histogrammes dans Matlab 
    ·Comment insérer des instructions dans la syntaxe 
    ·Comment créer un tuple Python 
    ·Comment: Xcode Avec PHP 
    ·Comment ajouter un préfixe dans une liste Point 
    ·Comment activer et désactiver des zones de texte en Ja…
    ·Comment remplacer les guillemets sur MySQL en PHP 
    ·Comment changer l'endroit où NetBeans enregistre le pr…
    ·Quelles sont les causes MySQL Overhead 
    Copyright © Connaissances Informatiques http://fr.wingwit.com