Maison interface Web js tutoriel JavaScript冒泡排序算法

JavaScript冒泡排序算法

Dec 19, 2016 pm 02:10 PM
tri à bulles

via冒泡排序由于比较简单和容易理解,往往会成为人们首先想到的排序算法。最基本的想法就是在一次里面比较两个数字,并且确保他们在移动到其他项目之前有一个正确的顺序。在每一关结束,有价值的“排序”到正确的位置,最终只留下其他项目排序。原文来自:http://caibaojian.com/javascript-bubble-sort.html

算法实现思路

对比第一项和第二项

如果第一项应该在第二项的后面,交换他们

对比第二项和第三项

如果第二项应该在第三项之后,交换他们

持续直到数据结束

这个过程就是重复数次直到数据完全排序完毕,在每一次循环中,由于每一次的最后一项都是正确的排序,所以排序的项就越来越少。为了更好的理解,我们来进行一个数组对比一下:[3, 2, 4, 5, 1].

例子对比过程

首先是正排序,对比第一项和第二项,由于2比3小,所以3排到后面,结果是[2,3,4,5,1].

第二项和第三项,顺序是正确的,无须交换;第三项和第四项也是正确的,无须交换,第四项和第五项交换,结果为[2,3,4,1,5].

再次循环第一项和第二项,依次到第三项和第四项交换,为[2,3,1,4,5]

第三次循环,第二和第三交换为[2,1,3,4,5]

第四次循环,第一和第二交换为[1,2,3,4,5]

实现冒泡排序的第一步就是创建一个方法来交换数组里面的两项,这个方法在很多低效率的排序中是比较常见的。一个简单的javascript实现代码为:

function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}
Copier après la connexion

via如上所述,这个排序算法由于需要进行多次的排序,效率是比较低的。假设一个数组有n个项,那么则需要2的n次方来计算,让我们来看看这个原文来自:http://caibaojian.com/javascript-bubble-sort.html

正向冒泡算法

function bubbleSort(items){

    var len = items.length,
        i, j, stop;

    for (i=0; i < len; i++){
        for (j=0, stop=len-i; j < stop; j++){
            if (items[j] > items[j+1]){
                swap(items, j, j+1);
            }
        }
    }

    return items;
}
Copier après la connexion

via外面的循环是控制了循环周期数,里面的循环则是项与项之间的排序比较。

反向冒泡排序

function bubbleSort(items){
    var len = items.length,
        i, j;

    for (i=len-1; i >= 0; i--){
        for (j=len-i; j >= 0; j--){
            if (items[j] < items[j-1]){
                swap(items, j, j-1);
            }
        }
    }

    return items;
}
Copier après la connexion

via上面两个代码的结果是一样的,都是从小到大排序,只是循环的顺序略有不同,都是正序冒泡。

反序冒泡排序

其实就是判断大小改变,第一项小于第二项时,交换位置,依次类推。

function bubbleSort2(items){
var len = items.length,
i,j,stop;
for(i=0;i<len; i++){
for(j=0,stop=len-i;j<stop;j++){
if(items[j]<items[j+1]){
swap(items,j,j+1);
}
}
}
return items;
}
Copier après la connexion

总结

via再次说明一下,冒泡排序可能并不适用于你的实际工作中哦,它只是一个简单的工具帮助我们了解算法并且为进一步获取更多的知识打下基础。而我们用得最多的可能是内置的Array.prototype.sort() 原型方法,这是由于它具有更高效率。



更多JavaScript冒泡排序算法相关文章请关注PHP中文网!

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)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois 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)

Structures de données et algorithmes Java : explication détaillée Structures de données et algorithmes Java : explication détaillée May 08, 2024 pm 10:12 PM

Les structures de données et les algorithmes sont à la base du développement Java. Cet article explore en profondeur les structures de données clés (telles que les tableaux, les listes chaînées, les arbres, etc.) et les algorithmes (tels que le tri, la recherche, les algorithmes graphiques, etc.) en Java. Ces structures sont illustrées par des exemples pratiques, notamment l'utilisation de tableaux pour stocker les scores, de listes chaînées pour gérer les listes de courses, de piles pour implémenter la récursion, de files d'attente pour synchroniser les threads, ainsi que d'arbres et de tables de hachage pour une recherche et une authentification rapides. Comprendre ces concepts vous permet d'écrire du code Java efficace et maintenable.

Comment implémenter un algorithme de tri à bulles en C# Comment implémenter un algorithme de tri à bulles en C# Sep 19, 2023 am 11:10 AM

Comment implémenter l'algorithme de tri à bulles en C# Le tri à bulles est un algorithme de tri simple mais efficace qui organise un tableau en comparant plusieurs fois les éléments adjacents et en échangeant leurs positions. Dans cet article, nous présenterons comment implémenter l'algorithme de tri à bulles à l'aide du langage C# et fournirons des exemples de code spécifiques. Tout d’abord, comprenons les principes de base du tri à bulles. L'algorithme part du premier élément du tableau et le compare avec l'élément suivant. Si l'élément actuel est plus grand que l'élément suivant, échangez leurs positions ; si l'élément actuel est plus petit que l'élément suivant, conservez-le.

Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Apr 29, 2024 pm 06:45 PM

La technologie des pointeurs de fonction peut améliorer l'efficacité et la réutilisabilité du code, en particulier comme suit : Efficacité améliorée : l'utilisation de pointeurs de fonction peut réduire la répétition du code et optimiser le processus d'appel. Améliorer la réutilisabilité : les pointeurs de fonction permettent d'utiliser des fonctions générales pour traiter différentes données, améliorant ainsi la réutilisabilité du programme.

Guide pour écrire un algorithme de tri personnalisé pour les tableaux PHP Guide pour écrire un algorithme de tri personnalisé pour les tableaux PHP Apr 27, 2024 pm 06:12 PM

Comment écrire un algorithme de tri de tableau PHP personnalisé ? Tri à bulles : trie un tableau en comparant et en échangeant des éléments adjacents. Tri par sélection : sélectionnez à chaque fois l'élément le plus petit ou le plus grand et échangez-le avec la position actuelle. Tri par insertion : insérez les éléments dans une pièce ordonnée un par un.

Analyse de la complexité de divers algorithmes de tri de tableaux PHP Analyse de la complexité de divers algorithmes de tri de tableaux PHP Apr 27, 2024 am 09:03 AM

Complexité de l'algorithme de tri des tableaux PHP : Tri à bulles : O(n^2) Tri rapide : O(nlogn) (moyenne) Tri par fusion : O(nlogn)

Analyser la complexité temporelle et la complexité spatiale en langage Go Analyser la complexité temporelle et la complexité spatiale en langage Go Mar 27, 2024 am 09:24 AM

Go est un langage de programmation de plus en plus populaire, conçu pour être facile à écrire, à lire et à entretenir, tout en prenant également en charge des concepts de programmation avancés. La complexité temporelle et la complexité spatiale sont des concepts importants dans l'analyse des algorithmes et de la structure des données. Ils mesurent l'efficacité d'exécution et la taille de la mémoire d'un programme. Dans cet article, nous nous concentrerons sur l’analyse de la complexité temporelle et spatiale dans le langage Go. Complexité temporelle La complexité temporelle fait référence à la relation entre le temps d'exécution d'un algorithme et la taille du problème. Le temps est généralement exprimé en notation Big O

Techniques de sélection et d'optimisation d'algorithmes dans l'optimisation des performances des fonctions C++ Techniques de sélection et d'optimisation d'algorithmes dans l'optimisation des performances des fonctions C++ Apr 23, 2024 pm 06:18 PM

Sélection d'algorithmes d'optimisation des performances des fonctions C++ : choisissez des algorithmes efficaces (tels que le tri rapide, la recherche binaire). Compétences en optimisation : intégrer de petites fonctions, optimiser la mise en cache, éviter les copies complètes et dérouler des boucles. Cas pratique : Lors de la recherche de la position maximale des éléments d'un tableau, la recherche binaire et l'expansion de boucle sont utilisées après optimisation, ce qui améliore considérablement les performances.

Structures de données et algorithmes Java : un guide pratique du cloud computing Structures de données et algorithmes Java : un guide pratique du cloud computing May 09, 2024 am 08:12 AM

L'utilisation de structures de données et d'algorithmes est cruciale dans le cloud computing pour gérer et traiter d'énormes quantités de données. Les structures de données courantes incluent des tableaux, des listes, des tables de hachage, des arbres et des graphiques. Les algorithmes couramment utilisés comprennent les algorithmes de tri, les algorithmes de recherche et les algorithmes graphiques. En tirant parti de la puissance de Java, les développeurs peuvent utiliser des collections Java, des structures de données thread-safe et des collections Apache Commons pour implémenter ces structures de données et algorithmes.

See all articles