Maison interface Web js tutoriel js有序数组的连接问题_javascript技巧

js有序数组的连接问题_javascript技巧

May 16, 2016 pm 05:21 PM
tableau ordonné 连接

1.前言 

昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。

2.简单但效率不高的算法 

 我首先想到的是使用内置的concat方法,然后再对其进行排序,这种方法完全没有考虑到数组是有序的前提条件,代码如下:    

复制代码 代码如下:

function concatSort(arrA,arrB){
     return arrA.concat(arrB).sort();
}

  为了弄清楚sort排序到底使用的是什么算法,特地到看了V8引擎的算法(连接),大概意思是当数组的长度较短的时候使用的是插入排序(InsertionSort),当数组的长度较长的时候使用的是快速排序(QuickSort)。纠正了自己长时间来的一个误区,一直以为sort使用的是冒泡。

3. 取小值插入的方法 

 大概思路:就是同时对两个数组进行遍历,设置两个标志(i,j)用于记录遍历的位置,将两个数组中较小的那个值插入新数组中,接着再将标志往前移动一个位置,重复比较,直到搜索值都插入到数组中。第一次做的时候判断条件写错了,所以出现了死循环,暴露了自己算法能力还是挺薄弱的。     

复制代码 代码如下:

function con(arrA,arrB){
   var i , j , k, lenA = arrA.length, lenB = arrB.length , allLen = lenA + lenB,result = [];
   for(i=0,j=0,k =0; k        if(i = lenB || arrA[i]            result.push(arrA[i++]); 
       }else{
            result.push(arrB[j++]);
       }
   }
   return result;
}
var a = [1,2,4], b = [3,5,6,7,10];
console.log(con(a,b));  //[1,2,3,4,5,6,7,10]

  将这个算法与上面的方法1,在jsperf进行性能对比,发现第二种算法的效率明显优于第一种。不相信就猛击这里

4.问题升级:增加合并数组的数量

  假如增加数组的个数,;例如 A = [1,5],B = [2,6],C = [3,4].......K = [....],求合并的数组。   

     当时被问到这个问题,第一感觉就是很像”归并算法“,但是又一想使用归并算法是用不上数组有序这个前提条件的。接着又想到了堆排序、快排序等算法,发现就是无法很有效地用上数组有序这个前提条件,最后选择放弃。面试完后依然没有思路,想了好久不知道如何高效的解决这个问题。快回宿舍的时候,师弟说了一句”又要过节了“,”又“字点醒了我,代码如下:   

复制代码 代码如下:

function conMore(){
    var outerArr = [], i ,len = arguments.length , result = [];
    for(i = 0 ; i        outerArr.push(arguments[i]);
    }
    if(result.length === 0){
        result = outerArr[0];
    }
    for(i=1 ;i        result = con(result,outerArr[i]);
    }
    return result;
}
function con(arrA,arrB){
   var i , j , k, lenA = arrA.length, lenB = arrB.length , allLen = lenA + lenB,result = [];
   for(i=0,j=0,k =0; k        if(i = lenB || arrA[i]            result.push(arrA[i++]); 
       }else{
            result.push(arrB[j++]);
       }
   }
   return result;
}
var a = [1,4,7], b = [2,5,8], c = [3,6,9,10];
console.log(conMore(a,b,c));   //[1,2,3,4,5,6,7,8,9,10]

再次使用jsperf对代码的性能进行测试分析,结果请猛击这里.

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)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
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)

Guide complet de la connexion à la manette de jeu Win11 Guide complet de la connexion à la manette de jeu Win11 Jan 02, 2024 pm 05:26 PM

Après la mise à jour vers le dernier système Win11, de nombreux utilisateurs ne savent pas comment connecter le contrôleur pour jouer à des jeux. Pour cette raison, nous vous proposons aujourd'hui un didacticiel détaillé sur la connexion du contrôleur Win11. Si vous n'avez pas encore terminé la connexion, Voyons comment le faire fonctionner. Comment connecter le contrôleur dans Win11 : 1. Cliquez sur Démarrer ci-dessous, puis entrez les paramètres Windows pour ouvrir le « Panneau de configuration ». 2. Après avoir entré, vous pouvez trouver « Afficher les appareils et les imprimantes » pour entrer. 3. À ce stade, vous pouvez voir les informations sur le périphérique contrôleur et simplement établir la connexion. 4. Une fois la connexion réussie, un √ apparaît et la connexion est terminée.

L'imprimante Win7 ne peut pas se connecter au code d'erreur 0x0000011b L'imprimante Win7 ne peut pas se connecter au code d'erreur 0x0000011b Dec 26, 2023 pm 10:01 PM

Plusieurs fois, nous devons utiliser un ordinateur pour nous connecter à l'imprimante pour diverses opérations d'impression, mais parfois certains utilisateurs rencontreront le problème que Win7 ne peut pas se connecter à l'imprimante 0x0000011b. Voici la solution spécifique. Win7 ne peut pas se connecter à l'imprimante 0x0000011b1. Touche de raccourci "win+r", entrez "regedit" 2. Recherchez le chemin suivant "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print" 3. Cliquez avec le bouton droit pour créer une nouvelle valeur "DWORD ( 32 bits) (D) et définissez la valeur sur 0. Nommez le nouveau projet « RpcAuthnLevelPri »

Comment vérifier les détails et l'état de la connexion réseau sous Windows 11 Comment vérifier les détails et l'état de la connexion réseau sous Windows 11 Sep 11, 2023 pm 02:17 PM

Afin de vous assurer que votre connexion réseau fonctionne correctement ou de résoudre le problème, vous devez parfois vérifier les détails de la connexion réseau sous Windows 11. En faisant cela, vous pouvez afficher diverses informations, notamment votre adresse IP, votre adresse MAC, la vitesse de la liaison, la version du pilote, etc., et dans ce guide, nous vous montrerons comment procéder. Comment trouver les détails de la connexion réseau sur Windows 11 ? 1. Utilisez l'application « Paramètres » et appuyez sur la touche + pour ouvrir les paramètres Windows. WindowsI Ensuite, accédez à Réseau et Internet dans le volet de gauche et sélectionnez votre type de réseau. Dans notre cas, il s'agit d'Ethernet. Si vous utilisez un réseau sans fil, sélectionnez plutôt un réseau Wi-Fi. Au bas de l'écran, vous devriez voir

Comment connecter la balance de graisse corporelle Comment connecter la balance de graisse corporelle Mar 07, 2024 pm 04:50 PM

Comment connecter la balance de graisse corporelle Keep ? Keep dispose d'une balance de graisse corporelle spécialement conçue, mais la plupart des utilisateurs ne savent pas comment connecter la balance de graisse corporelle Keep. Voici ensuite le didacticiel graphique sur la méthode de connexion de la balance de graisse corporelle Keep. L'éditeur apporte aux utilisateurs, les utilisateurs intéressés viennent y jeter un œil ! Comment connecter la balance de graisse corporelle Keep 1. Ouvrez d'abord le logiciel Keep, accédez à la page principale et cliquez sur [Mon] dans le coin inférieur droit pour sélectionner [Matériel intelligent] 2. Ensuite, sur la page Mes appareils intelligents, cliquez sur le bouton ; Bouton [Ajouter un appareil] au milieu ; 3, puis sélectionnez l'appareil auquel vous souhaitez ajouter une interface, sélectionnez [Échelle de graisse corporelle/poids intelligente] 4. Ensuite, sur la page de sélection du modèle d'appareil, cliquez sur l'option [Conserver la balance de graisse corporelle] ; ; 5. Enfin, dans l'interface ci-dessous, enfin [Ajouter maintenant] en bas

Comment résoudre une connexion réseau limitée dans Windows 10 Comment résoudre une connexion réseau limitée dans Windows 10 Feb 19, 2024 pm 09:20 PM

Solutions aux connexions réseau restreintes dans Win10 Avec le développement rapide de la technologie, Internet est devenu un élément indispensable de la vie des gens. Cependant, nous pouvons parfois rencontrer des problèmes lors de la connexion à Internet sur des ordinateurs utilisant le système d'exploitation Windows 10, dont l'un est la restriction des connexions. Dans ce cas, nous ne pouvons pas accéder aux pages Web, télécharger des fichiers ou utiliser normalement les fonctions réseau. Alors, y a-t-il un moyen de résoudre ce problème ? Cet article vous présentera plusieurs solutions courantes. 1. Vérifiez les paramètres de connexion réseau.

Que signifie le code d'erreur de l'imprimante 0x0000011b ? Que signifie le code d'erreur de l'imprimante 0x0000011b ? Feb 18, 2024 pm 10:02 PM

Que signifie 0x0000011b lors de la connexion à une imprimante ? Les utilisateurs rencontrent souvent divers codes d'erreur lorsqu'ils utilisent des ordinateurs, des ordinateurs portables ou d'autres appareils. Parmi eux, 0x0000011b est un code d’erreur de connexion d’imprimante courant. Alors, que signifie la connexion de l’imprimante 0x0000011b ? Tout d’abord, nous devons comprendre les principes de base de la connexion d’une imprimante. Lorsque nous devons imprimer des fichiers à partir de l'ordinateur, nous devons généralement connecter l'imprimante à l'ordinateur pour le transfert de données entre les deux. Cette connexion peut être établie via

L'imprimante partagée ne peut pas se connecter à l'imprimante L'imprimante partagée ne peut pas se connecter à l'imprimante Feb 22, 2024 pm 01:09 PM

Avec le développement de l’ère numérique, les imprimantes partagées sont devenues un élément indispensable de l’environnement de bureau moderne. Cependant, nous pouvons parfois rencontrer le problème que l'imprimante partagée ne peut pas être connectée à l'imprimante, ce qui affectera non seulement l'efficacité du travail, mais provoquera également une série de problèmes. Cet article vise à explorer les raisons et les solutions pour lesquelles une imprimante partagée ne peut pas se connecter à l'imprimante. Il existe de nombreuses raisons pour lesquelles une imprimante partagée ne peut pas se connecter à l'imprimante, la plus courante étant les problèmes de réseau. Si la connexion réseau entre l'imprimante partagée et l'imprimante est instable ou interrompue, le fonctionnement normal ne sera pas possible.

Comment connecter la montre OnePlus au casque Bluetooth_Comment connecter la montre OnePlus au casque Bluetooth Comment connecter la montre OnePlus au casque Bluetooth_Comment connecter la montre OnePlus au casque Bluetooth Mar 23, 2024 pm 01:16 PM

1. Placez les écouteurs dans la boîte des écouteurs et maintenez le couvercle ouvert. Appuyez et maintenez enfoncé le bouton de la boîte pour entrer dans l'état d'appairage des écouteurs. 2. Activez la fonction regarder de la musique et sélectionnez les écouteurs Bluetooth, ou sélectionnez les écouteurs Bluetooth dans la fonction des paramètres de la montre. 3. Sélectionnez le casque sur la montre à associer avec succès.

See all articles