Le contenu de cet article est de partager avec vous l'analyse de deux algorithmes de tri js pratiques, qui ont une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
Zéro : Préparation des données, étant donné le tableau arr=[2,5,4,1,7,3,8,6,9,0];
1 : Faux tri
1 idée : Tri à bulles Idée : chaque fois que la taille de deux données adjacentes est comparée, la plus petite est classée en premier. Si la donnée précédente est plus grande que la dernière, échangez les positions des deux nombres
Pour mettre en œuvre le. règles ci-dessus, vous devez utiliser Aller à une boucle for à deux couches, la couche externe compte du premier à l'avant-dernier numéro et la couche interne compte du dernier numéro au dernier numéro de la couche externe
2 Fonctionnalités : La base de l'algorithme de tri. C’est simple, pratique et facile à comprendre. L’inconvénient est qu’il nécessite de nombreuses comparaisons et est moins efficace.
3 Mise en œuvre :
var times=0; var bubbleSort=function(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } console.log("第"+(++times)+"次排序后:"+arr); } } return arr; } console.log("The result is:"+bubbleSort(arr));
4 Efficacité : longueur du tableau 10, temps de tri 45 fois.
2 : Tri rapide
1 Idée : Idée de tri rapide : Trouvez d'abord un point de référence (généralement le milieu du tableau d'index), puis le tableau est divisé en deux parties par le point de référence , et le tableau est divisé en deux parties à son tour. Comparez les données du point de référence. S'il est plus petit, placez-le à gauche, sinon placez-le à droite.
Utilisez un tableau vide à gauche et à droite pour stocker les données comparées. Enfin, les opérations ci-dessus sont effectuées de manière récursive jusqu'à ce que la longueur du tableau soit <=1;
2 Caractéristiques : Rapide et couramment utilisée. L'inconvénient est que deux tableaux supplémentaires doivent être déclarés, ce qui gaspille des ressources en espace mémoire.
3 Mise en œuvre :
var times=0; var quickSort=function(arr){ //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){ return arr; } var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 //遍历数组,进行判断分配 for(var i=0;i<arr.length;i++){ if(arr[i]<midIndexVal){ left.push(arr[i]);//比基准点小的放在左边数组 } else{ right.push(arr[i]);//比基准点大的放在右边数组 } console.log("第"+(++times)+"次排序后:"+arr); } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return quickSort(left).concat(midIndexVal,quickSort(right)); }; console.log(quickSort(arr));
4 Efficacité : longueur du tableau 10, temps de tri 22 fois.
3 : Résumé
Les deux méthodes ont leurs propres avantages et inconvénients, mais ces deux méthodes doivent être maîtrisées en tant que programmeurs, car l'une est la plus basique et l'autre celle-ci est le plus couramment utilisé et sera rencontré dans les entretiens ou dans la vie quotidienne.
Recommandations associées :
JS trois codes majeurs d'implémentation de l'algorithme de tri
Les dix meilleurs algorithmes de tri classiques de JS
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!