搜尋
首頁web前端js教程js有序數組的連接問題_javascript技巧

1.前言 

昨天碰到一道關於如何解決有序數組的連接問題,這是一個很常見的問題。但這裡要考慮到程式碼的效率問題,因為要連接的陣列都是有序的,這是一個非常重要的前提條件。

2.簡單但效率不高的演算法 

 我首先想到的是使用內建的concat方法,然後再對其進行排序,這種方法完全沒有考慮到數組是有序的前提條件,代碼如下:    

複製程式碼 程式碼如下:

f arrA.concat(arrB).sort();
}

  為了弄清楚sort排序到底使用的是什麼演算法,特地到看了V8引擎的演算法(

連接),大概意思是當數組的長度較短的時候使用的是插入排序( InsertionSort),當陣列的長度較長的時候使用的是快速排序(QuickSort)。修正了自己長時間來的一個誤區,一直以為sort使用的是冒泡。

3. 取小值插入的方法 

 大概思路:就是同時對兩個數組進行遍歷,設定兩個標誌(i,j)用於記錄遍歷的位置,將兩個數組中較小的那個值插入新數組中,接著再將標誌往前移動一個位置,重複比較,直到搜尋值都插入陣列。第一次做的時候判斷條件寫錯了,所以出現了死循環,暴露了自己演算法能力還是挺薄弱的。     

複製程式碼 程式碼如下:
function con(arrA,arrB){
 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(arrB[j ]);
        }
   }
  ,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 = [....],求合併的陣列。   
     當時被問到這個問題,第一感覺就是很像」歸併演算法“,但是又一想使用歸併演算法是用不上數組有序這個前提條件的。接著又想到了堆排序、快排序等演算法,發現就是無法很有效地用上數組有序這個前提條件,最後選擇放棄。面試完依然沒有思路,想了好久不知道如何有效率的解決這個問題。快回宿舍的時候,師弟說了一句」又要過節了「,」又「字點醒了我,代碼如下:   


複製程式碼

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
win11无法连接局域网打印机,应该如何解决?win11无法连接局域网打印机,应该如何解决?Jul 01, 2023 am 08:57 AM

win11无法连接局域网打印机怎么办?有不少用户的win11系统在使用局域网打印机功能的时候,无法正常连接到共享打印机,出现这个问题,可能是连接步骤或者是某项功能服务没打开。今天小编就给大家带来了多种解决方法,很多小伙伴不知道怎么详细操作,小编下面整理了win11电脑不能连共享打印机解决技巧,如果你感兴趣的话,跟着小编一起往下看看吧!win11电脑不能连共享打印机解决技巧1、首先,按键盘上的Win+X组合键,或右键点击任务栏上的Windows开始图标,在打开的隐藏菜单项中,选择运行;2、运行窗口

使用PHP连接MariaDB数据库使用PHP连接MariaDB数据库May 17, 2023 am 08:24 AM

MariaDB是一种开源的关系型数据库管理系统,它是MySQL的一个分支。PHP作为一种开源的服务器端脚本语言,被广泛应用于Web开发中。在很多Web开发项目中,需要使用PHP连接到MariaDB数据库,以便在Web应用程序中存储和检索数据。这篇文章将介绍如何使用PHP编写代码来连接MariaDB数据库。一、安装MariaDB服务器在使用PHP连接Maria

PHP8.0中的连接多个任务库PHP8.0中的连接多个任务库May 14, 2023 am 09:01 AM

随着现代程序开发的不断发展,软件项目往往需要同时使用多个任务库来处理不同的任务。PHP语言一直是Web开发的重要工具,其在7.0版本中引入了新的并发处理特性,使得PHP在处理任务库时更加高效、灵活。在8.0版本中,PHP又新增了对连接多个任务库的支持,这为我们在处理大量数据和并发请求时提供了极大的便利。在本文中,我们将探讨PHP8.0中连接多个任务库的方法和

Python连接阿里云接口,实现邮件发送功能Python连接阿里云接口,实现邮件发送功能Jul 05, 2023 pm 04:33 PM

Python连接阿里云接口,实现邮件发送功能阿里云提供了一系列的服务接口,其中包括了邮件发送服务。通过Python脚本连接阿里云接口,我们可以实现邮件的快速发送。本篇文章将向您展示如何使用Python脚本连接阿里云接口,并实现邮件发送功能。首先,我们需要在阿里云上申请邮件发送服务,获取相应的接口信息。在阿里云管理控制台中,选择邮件推送服务,然后创建一个新的邮

如何解决MySQL连接错误1203?如何解决MySQL连接错误1203?Jun 30, 2023 am 11:33 AM

MySQL连接错误1203,如何解决?MySQL是一种广泛使用的关系型数据库管理系统,但是在使用MySQL时,一些连接错误可能会出现。其中一个常见的错误是错误代码1203,它表示数据库连接已中断。在遇到这个错误时,可以采取一些措施来解决问题。首先,我们需要确定错误1203的确切原因。这个错误通常是由于连接超时或连接过多引起的。连接超时可能是由于数据库服务器负

如何解决MySQL连接错误1062?如何解决MySQL连接错误1062?Jun 30, 2023 pm 05:00 PM

MySQL连接错误1062,如何解决?MySQL是一种常用的关系型数据库管理系统,广泛应用于各种软件开发和数据存储场景中。在使用MySQL的过程中,我们有时会遇到各种错误,其中一个常见的错误是连接错误1062。本文将介绍这个错误的原因以及解决方法。首先,我们需要了解连接错误1062的含义。连接错误1062通常意味着在执行插入操作时,违反了表的唯一约束条件。在

Java优化MySQL连接:提升写入及并发性能Java优化MySQL连接:提升写入及并发性能Jun 29, 2023 pm 10:18 PM

如何在Java程序中优化MySQL连接的写入性能和并发性能?在开发Java程序时,我们经常需要使用到数据库,而MySQL作为一种常见的数据库管理系统,其连接的写入性能和并发性能是我们需要关注的重点。本文将介绍如何在Java程序中优化MySQL连接的写入性能和并发性能,以提升程序的效率。使用连接池管理连接:连接池可以管理数据库连接的创建、销毁和复用,避免频繁地

Java连接数据库的SQLException异常常见原因是什么?Java连接数据库的SQLException异常常见原因是什么?Jun 24, 2023 pm 11:21 PM

Java连接数据库的SQLException异常常见原因是什么?在Java开发中,Database操作是非常关键的一环。其中,对于常用的CRUD操作,特别是SELECT和INSERT操作,都需要使用到JDBC来实现。但是,在JDBC应用开发中,与数据库的连接操作、SQL语言的执行过程、以及结果集的处理等阶段,可能会发生SQLException异常。本文将分析

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境