Maison Java javaDidacticiel Explication détaillée d'exemples de tri Java Hill

Explication détaillée d'exemples de tri Java Hill

May 13, 2017 am 11:10 AM
java Tri des collines 数据结构 算法

Cet article présente principalement la structure des données Java et l'algorithme du tri Hill, et analyse le concept, le principe, la méthode de mise en œuvre et les précautions associées du tri Hill sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Les exemples de cet article décrivent le tri Hill des structures de données et des algorithmes Java. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Ce que je veux présenter ici, c'est le tri Hill (méthode de tri incrémentiel par réduction).

Tri par colline : fonctionne en comparant des éléments distants d'une certaine distance ; la distance (incrément) utilisée dans chaque comparaison diminue à mesure que l'algorithme progresse jusqu'à ce que seuls les éléments adjacents soient comparés jusqu'au dernier tri. passe d'éléments. Il s'agit d'un type de tri par insertion et d'une amélioration de l'algorithme de tri par insertion directe.

Idée algorithmique : Divisez d'abord la séquence à trier en plusieurs sous-séquences selon un certain incrément d, effectuez un tri par insertion directe sur tous les éléments de chaque sous-séquence, puis utilisez un regroupez-le par incrément, puis triez-le dans chaque groupe. Lorsque l'incrément est réduit à 1, le nombre entier à trier est divisé en un groupe et le tri est terminé. Remarque : La valeur de l'incrément - généralement la moitié de la séquence est prise comme incrément pour la première fois, puis divisée par deux à chaque fois jusqu'à ce que l'incrément soit 1. Le code d'implémentation de l'algorithme est le suivant :


package exp_sort;
public class ShellSort {
  public static void shell(int array[]) {
    int j;
    int average;
    //设置增量的值
    for (average = array.length / 2; average > 0; average /= 2) { //步长
      for (int i = average; i < array.length; i++) { //子序列进行直接插入排序
        int temp = array[i];
        for (j = i; j >= average && temp < array[j - average]; j -= average) {
          array[j] = array[j - average];
        }
        array[j] = temp;
      }
    }
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
    System.out.println("\n");
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
    shell(array);
  }
}
Copier après la connexion
Analyse de l'algorithme :

Cet algorithme insère et trie les éléments selon différents tailles de pas , lorsque les éléments sont très désordonnés au début, la taille du pas est la plus grande, donc le nombre d'éléments de tri par insertion est très petit et la vitesse est très rapide lorsque les éléments sont essentiellement ordonnés, la taille du pas est ; très petit et le tri par insertion est très efficace pour les séquences ordonnées élevées. Par conséquent, la complexité temporelle du tri Hill sera meilleure que O(n^2), qui est O(n^1,5), et l'efficacité du tri est bien supérieure à tri par insertion . En raison de plusieurs tris par insertion, nous savons qu'un tri par insertion est stable et ne modifiera pas l'ordre relatif des mêmes éléments. Cependant, dans différents processus de tri par insertion, les mêmes éléments peuvent se déplacer dans leurs tris par insertion respectifs, et finalement leur stabilité le sera. le changement est perturbé, donc le tri des coquilles est instable . Le tri Hill n'est pas aussi rapide que l'algorithme de tri rapide O(N*(logN)), il est donc plus adapté au tri de données de taille moyenne, mais n'est pas le choix optimal pour trier des données à très grande échelle. . Mais c'est beaucoup plus rapide que l'algorithme de complexité O(N^2). Et le tri Hill est très facile à mettre en œuvre et le code de l'algorithme est court et simple. De plus, la différence entre l'efficacité des performances de l'algorithme de Hill dans le pire des cas et le cas moyen n'est pas grande, tandis que l'efficacité du tri rapide dans le pire des cas sera très faible. 【Recommandations associées】

1.

Recommandation spéciale : Téléchargez la version V0.1 de "php Programmer Toolbox" 2.

Tutoriel vidéo gratuit Java

3

Manuel en ligne YMP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles