Maison >interface Web >js tutoriel >Explication détaillée du tri Hill en JavaScript

Explication détaillée du tri Hill en JavaScript

韦小宝
韦小宝original
2018-03-14 14:08:451879parcourir

Cet article parle du tri Hill en JavaScript Si vous ne connaissez pas le tri Hill en JavaScript ou si vous êtes intéressé par le tri Hill en JavaScript, jetons un coup d'œil à cet article ensemble. D'accord, arrêtez de dire des bêtises et allons droit au but. !

Tri Hill en JavaScript

Le tri Hill est une implémentation plus efficace du tri par insertion. Il diffère du tri par insertion en ce sens qu'il compare d'abord les éléments les plus éloignés. Le cœur du tri Hill réside dans la définition de la séquence d’intervalles. La séquence d'intervalles peut être définie à l'avance ou définie dynamiquement. L'algorithme de définition dynamique des séquences d'intervalles a été proposé par Robert Sedgewick, co-auteur de "Algorithms (4th Edition)". Ici, j'ai utilisé cette méthode.

Implémentation du code JavaScript

function shellSort(arr) {  
    var len = arr.length,  
        temp,  
        gap = 1;  
    while(gap < len/3) {          //动态定义间隔序列  
        gap =gap*3+1;  
    }  
    for (gap; gap > 0; gap = Math.floor(gap/3)) {  
        for (var i = gap; i < len; i++) {  
            temp = arr[i];  
            for (var j = i-gap; j >= 0 && arr[j] > temp; j-=gap) {  
                arr[j+gap] = arr[j];  
            }  
            arr[j+gap] = temp;  
        }  
    }  
    return arr;}

Ce qui précède représente tout le contenu de cet article. Si vous n'y connaissez pas grand-chose, vous pouvez facilement maîtriser les deux côtés par vous-même

Recommandations associées :

Comment implémenter le tri JS Hill et le tri rapide

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:
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