Cracking the coding interview--Q9.4

ESP32-S3打造离线语音助手:从零部署自定义唤醒词与本地大模型推理【实战指南】 本文详细介绍了如何利用ESP32-S3芯片打造离线语音助手,包括自定义唤醒词训练与本地大模型推理的实战指南。通过硬件架构解析、音频处理优化及性能调优技巧,实现低延迟、高隐私保护的语音交互方案,特别适合智能家居和物联网应用。 阅读详情

原文:

If you have a 2 GB file with one string per line, which sorting algorithm would you use to sort the file and why?

译文:

如果你有个2GB的文件,其中每一行是一个字符串,你会使用哪种算法来排序,为什么?


当面试官说到2GB文件的时候,他其实就是在暗示你, 他并不希望一次性把所有的数据都载入内存。这样子的话,我们要怎么做呢? 我们每次就将部分数据载入内存就好了。

算法:

首先我们要了解,可以用的内存有多大?假设我们有X MB的内存可用。

  1. 我们将文件分为K份,其中X*K=2GB。每次取其中一份载入到内存中, 用O(nlog n)的算法排序,然后再保存到外部文件。
  2. 载入下一份并排序
  3. 当我们将K份小文件都排好序,合并它们。

上面的算法就是外排序,步骤3又称为N路归并。

使用外排序是由于数据太大了,无法一次全部加载到内存中,所以需要借助磁盘进行存储, 每次只从磁盘中加载一部分数据进入内存,进行排序。

推荐阅读: 维基百科:外排序


参考:http://hawstein.com/posts/9.4.html


(一)ANSYS WORKBENCH实践入门 ANSYS-workbench 有限元分析应用基础教程 (张晔)学习笔记 阅读详情

相关推荐

Cadence Virtuoso VIVA波形分析:从背景色修改到线宽调整的完整指南

本文详细介绍了Cadence Virtuoso VIVA波形分析工具的核心使用技巧,包括背景色修改、线宽调整等高级功能。通过具体操作步骤和配置方法,帮助工程师优化波形显示效果,提升工作效率。特别强调了与Calculator组件的配合使用,以及专业波形图的输出技巧。

weixin_27330481的博客 620

[模板总结] - 归并排序思想

模板题目链接 Lintcode 454. Sort Array:归并排序 Leetcode 23. Merge K sort-lists:K路归并问题 归并排序思路 归并思路很好理解,以两个数组归并来举例,开一个新数组来保存新的合并结果,两个原始数组(需要保证两个原始数组有序)从头开始比较,哪个比较小就加入合并数组中,最后就是排序后结果。 对于归并排序问题,由于原始数组非有序,所以需要利用分治思想将原始数组分解到有序数组,也就是单一元素数组自身是有序,通过合并小问题来最终解决两个原始数组合...

ok1382038的博客 983

微积分,用编程理解高数(python,C,C++)

很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。

linhhanpy的博客 1177

微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)

这两种排序方法都是先将一个无序的大的外部文件,分成若干块,分别读到内存中。 将每一块都先排好序,放到一个新的外部文件中。 二路归并的思路是每次将外部排序的文件两两合并,变成一个二倍大小的文件,然后对二倍大小的文件继续两两合并。直到最终合并为一个文件为止。 k路归并是将外部排好序的子文件一次合并。先在各个文件中取出第一个数据,放到一个优先级队列中。然后选出最小的数据输出到外部结果文件里。并从最...

java开发指南博客 【转载】 352

Python实战:用Py2neo轻松玩转Neo4j图数据库(附完整CRUD示例)

本文通过构建武侠知识图谱的实战案例,详细介绍了如何使用Python的Py2neo库对Neo4j图数据库进行CRUD操作。内容涵盖环境搭建、节点与关系创建、Cypher查询、数据更新删除及事务管理,帮助开发者直观高效地处理复杂关联数据,实现从入门到进阶的完整交互流程。

weixin_29034963的博客 185

Excel VBA--按某一列拆分数据到多个文件

首先,将需要拆分的sheet命名为“明细”,接下来运行此代码,按提示操作即可。 在这里插入代码片 Sub chaifen() '定义变量类型 Dim sht, sh1, sh2 As Worksheet Dim k, i, j As Integer Dim irow As Integer Dim col As Integer Dim str As String '程序开始是要求输入按哪一列拆分数...

weixin_43650026的博客 5871

数据结构 | 【排序】外部排序

外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。

"You are worthy! You can do it!" 5958

电路布局中近场耦合问题

开关电源EMC设计中,传导骚扰超标往往源于空间耦合而非参数问题。某案例中,DC-DC模块的非屏蔽电感磁场泄漏耦合到邻近X电容,导致0.5MHz频点超标。通过将X电容移至PCB底层、优化布局保持15mm间距后,问题完全解决。实践证明:EMC设计需注重空间隔离,优先采用屏蔽电感,滤波元件应远离高频磁场区,布局优化比参数调整更有效。这提示工程师需将电磁兼容视为空间问题而不仅是电气问题。

硬核科技 375

9.4-外部排序+k路归并

转自http://hawstein.com/posts/9.4.html 当面试官说到2GB文件的时候,他其实就是在暗示你, 他并不希望一次性把所有的数据都载入内存。这样子的话,我们要怎么做呢? 我们每次就将部分数据载入内存就好了。 算法: 首先我们要了解,可以用的内存有多大?假设我们有X MB的内存可用。 我们将文件分为K份,其中X*K=2GB。每次取其中一份载入到内存中,

oooooops 1791

VCS NLP 低功耗验证系列(六):功耗分析与优化——SAIF 报告与验证效率提升

本文是VCS NLP低功耗验证系列的第六篇,主要解决功耗数据采集和验证效率优化问题。文章首先介绍了SAIF(Switching Activity Interchange Format)文件在功耗分析中的作用,详细讲解了VCS的Region-Based SAIF功能,包括三个关键系统任务($saif_region_create、$saif_region_exclude、$saif_region_monitor)的使用方法和工程实践建议。接着从编译侧、运行侧和方法学侧三个维度提出了NLP验证效率优化策略,特别强

元直的博客 470

12、每日卫星任务规划问题的不同公式

本文探讨了卫星任务规划问题的多种数学公式表示方法,包括传统的整数线性规划(ILP)模型、改进的基于路径的公式、基于集合覆盖的公式以及动态规划公式。通过案例研究比较了不同公式的求解效率和适用场景,并提供了使用Python进行实际求解的操作步骤。最后讨论了进一步优化策略及未来研究方向,旨在为解决卫星任务规划问题提供全面的理论支持和实践指导。

assembly8low的博客 203

玲珑oj 1072 - Capture

点击打开链接 题意:就是一颗树,找出深度最深哪那一层,字典序最小的节点, 题解: 开两个数组,一个标记是否使用,一个记录该节点的深度。     开个vector 记录该根下的所有点(删除该跟的时候,用dfs跑一边全部删完)     开个set 记录每个深度的节点号,输出对应深度的的第一个即为所求。 大神们用dfs序+线段树,,我不会, #include us

zoro_n的博客 534

YOLOV5 自动刷图脚本实战(十五)之如何找到正确的门

DXF是一个2D游戏,我们所看到的人物移动,其实是后面的背景在移动,我们所看到的画面,不过是一个完整背景中的一个镜头视角而已想要正确找到门的坐标,我们需要对不同的地图中的每个房间做一些配置信息。

qq_38892949的博客 2805

Cracking the coding interview--Q4

Chapter 4 | Trees and Graphs 4.1 Implement a function to check if a tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree such that no two leaf nodes differ

763

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Cracking the coding interview--Q9

Chapter 9 | Sorting and Searching 9.1 You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. Write a method to merge B into A in sorted order. 插入排序,需要调整数

1020

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

cracking-the-coding-interview的核心秘密:如何用单元测试“定义”面试题?C++ Catch+Python unittest的TDD完整教程

cracking-the-coding-interview 是一个为《Cracking the Coding Interview》(CTCI)第 6 版提供 **C++ 与 Python 双语言解法** 的开源项目,其最大特色是:**每一道面试题的解法都配有完整的自动化单元测试**(C++ 端用 Catch 框架,Python 端用 unittest 框架),自动化测试覆盖率超过 90%。更妙的是

gitblog_00501的博客 317

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Cracking the coding interview--Q9.7

原文: A circus is designing a tower routine consisting of people standing atop one another’s shoulders. For practical and aesthetic reasons, each person must be both shorter and lighter than the pers

执子之手 547

Cracking the coding interview--Q9.6

原文: Given a matrix in which each row and each column is sorted, write a method to find an element in it. 译文: 给出一个矩阵,其中每一行和每一列都是有序的,写一个函数在矩阵中找出指定的数。 矩阵是有序的,因此要利用这一点,当矩阵中元素和要查找的元素对比后,

执子之手 604

Cracking the coding interview--Q17

Chapter 17 | Networking 17.1 Explain what happens, step by step, after you type a URL into a browser. Use as much detail as possible.  先进行DNS的namequery,得到对方的cname或者a记录(当然也可能是IPV6),反正就最后得到对方的IP

630

Cracking the coding interview--Q9.3

题目 原文: Given a sorted array of n integers that has been rotated an unknown number of times, give an O(log n) algorithm that finds an element in the array. You may assume that the array was originall

cfanr 1620

Cracking the coding interview--Q4.2

原文: Given a directed graph, design an algorithm to find out whether there is a route between two nodes. 译文: 给定一个有向图,设计算法判断两结点间是否存在路径。 根据题意,给定一个有向图和起点终点,判断从起点开始,是否存在一条路径可以到达终点。 考查的就是图

执子之手 395

渣基础:比照Hawstein学Cracking the coding interview(1)

《C++ Primer 第五版》书实在是太长,太厚了。总是看了十几页就看累了,坚持不了多久,想了想还是别勉强自己,jued

低端玩家的记录地 949

Cracking the coding interview--Q4.7

题目 原文: You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1. 译文: 有两个非常大的二叉树:T1,有上百万个结点,T2,有上百个

cfanr 1452

Cracking the coding interview--Q1.1

作者:ustcweijie 参考:http://hawstein.com/posts/1.1.html 1. 题目 原文:Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?

蔚蓝天空 546

Cracking the Coding Interview Chap1 Q1.1

Q1.1 Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures? Sol.1 : check every char of the string to every other char of

biubiu的专栏 965
上一篇: Cracking the coding interview--Q9.3
下一篇: Cracking the coding interview--Q9.5
java_wliang
博客等级 码龄15年 19粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值