-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathch05_sequence.html
45 lines (44 loc) · 39.6 KB
/
ch05_sequence.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>序列 | 编程导引</title>
<meta name="description" content="A VitePress site">
<link rel="preload stylesheet" href="/assets/style.c68003ee.css" as="style">
<script type="module" src="/assets/app.ef6b4c6d.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.41379913.js">
<link rel="modulepreload" href="/assets/chunks/theme.0fe641a0.js">
<link rel="modulepreload" href="/assets/chunks/cons-cells.6ed9c323.js">
<link rel="modulepreload" href="/assets/ch05_sequence.md.e9066e5e.lean.js">
<script>var _hmt=_hmt||[];(function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?c522f795b036ecc6e5446ce20e40ae9f";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.css">
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-b2cf3e0b><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8616af1></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8616af1> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b2cf3e0b data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-94c81dcc><div class="container" data-v-94c81dcc><div class="title" data-v-94c81dcc><div class="VPNavBarTitle has-sidebar" data-v-94c81dcc data-v-f4ef19a3><a class="title" href="/" data-v-f4ef19a3><!--[--><!--]--><!----><!--[-->编程导引<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-94c81dcc><div class="curtain" data-v-94c81dcc></div><div class="content-body" data-v-94c81dcc><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:'Meta';" data-v-94c81dcc><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-94c81dcc data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/intro.html" tabindex="0" data-v-7f418b0f data-v-37adc828 data-v-8f4dc553><!--[-->编程导引<!--]--><!----></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-94c81dcc data-v-f6a63727><label title="toggle dark mode" data-v-f6a63727 data-v-a9c8afb8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-checked="false" data-v-a9c8afb8 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a9c8afb8><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a9c8afb8><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></label></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-94c81dcc data-v-40855f84 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-764effdf><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><label title="toggle dark mode" data-v-40855f84 data-v-a9c8afb8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-checked="false" data-v-a9c8afb8 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a9c8afb8><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a9c8afb8><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></label></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-94c81dcc data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav" data-v-b2cf3e0b data-v-f5a2ca58><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-f5a2ca58><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-f5a2ca58><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-f5a2ca58>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-f5a2ca58 data-v-079b16a8><button data-v-079b16a8>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-b2cf3e0b data-v-af16598e><div class="curtain" data-v-af16598e></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-af16598e><span class="visually-hidden" id="sidebar-aria-label" data-v-af16598e> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-af16598e><section class="VPSidebarItem level-0 has-active" data-v-af16598e data-v-c4656e6d><!----><div class="items" data-v-c4656e6d><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/intro.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>引言</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch01_environment.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>环境</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch02_computation.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>计算</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch03_procedure.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>过程</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch04_encoding.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>编码</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link is-active has-active" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch05_sequence.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>序列</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch06_data.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>数据</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch07_state.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>状态</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch08_reference.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>引用</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch09_closure.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>闭包</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch10_object.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>对象</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/ch11_concurrency.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>并发</p><!--]--><!----></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b2cf3e0b data-v-a494bd1d><div class="VPDoc has-sidebar has-aside" data-v-a494bd1d data-v-c4b0d3cf><!--[--><!--]--><div class="container" data-v-c4b0d3cf><div class="aside" data-v-c4b0d3cf><div class="aside-curtain" data-v-c4b0d3cf></div><div class="aside-container" data-v-c4b0d3cf><div class="aside-content" data-v-c4b0d3cf><div class="VPDocAside" data-v-c4b0d3cf data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-9a431c33><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c4b0d3cf><div class="content-container" data-v-c4b0d3cf><!--[--><!--]--><!----><main class="main" data-v-c4b0d3cf><div style="position:relative;" class="vp-doc _ch05_sequence" data-v-c4b0d3cf><div><h1 id="序列" tabindex="-1">序列 <a class="header-anchor" href="#序列" aria-label="Permalink to "序列""></a></h1><p>你应该记得,我们在编码那一张提过如何表示多个数字的,没错,定长编码可以帮我们解决这个问题,帮我们界定数字之间的边界。但是,当我们要表示的数据不只是一组的时候,又该怎么来界定边界?</p><p>比如,我们有两组数,分别是<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">1</span><span class="mpunct">,</span><span class="mord mathrm">3</span><span class="mpunct">,</span><span class="mord mathrm">5</span><span class="mpunct">,</span><span class="mord mathrm">7</span><span class="mpunct">,</span><span class="mord mathrm">9</span><span class="mpunct">,</span><span class="mord mathrm">1</span><span class="mord mathrm">1</span></span></span></span>和<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">0</span><span class="mpunct">,</span><span class="mord mathrm">2</span><span class="mpunct">,</span><span class="mord mathrm">4</span><span class="mpunct">,</span><span class="mord mathrm">6</span><span class="mpunct">,</span><span class="mord mathrm">8</span><span class="mpunct">,</span><span class="mord mathrm">1</span><span class="mord mathrm">0</span></span></span></span>,假设以一个字节(十六进制)表示的话,就是下面这个样子的:</p><div class="language-cpp"><button title="Copy Code" class="copy"></button><span class="lang">cpp</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#F78C6C;">0x01030507</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0x090B0002</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0x0406080A</span></span></code></pre></div><p>好的,接下来请完成以下任务:</p><ul><li>找到第二个序列中的第三个数。</li></ul><p>嗯,是不是感觉自己懵了,如果不知道第一组有几个的话你是不可能准确找到这个数字的。</p><p>于是我们得到了一个简单的界定序列边界的方法,就是要知道各序列对应的长度。</p><p>比如我们知道这两个序列是连续放在一起的,第一个序列长度是<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.64444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">6</span></span></span></span>,同时也知道要找的是第二个序列的第三个数,那么这个数就应该是第<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">6</span><span class="mbin">+</span><span class="mord mathrm">3</span></span></span></span>个数字。</p><p>当然,这个数字要从<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.64444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">1</span></span></span></span>数过去才行,否则从任意其他的位置数,都不能得到我们想要的结果。</p><h2 id="长度" tabindex="-1">长度 <a class="header-anchor" href="#长度" aria-label="Permalink to "长度""></a></h2><p>我们可以看到,界定一个序列,必须要知道的是两点,第一个是他的起始元素,第二个就是这个序列的长度。</p><p>一般来说,当这个序列的长度固定不变,并且每个元素是挨在一起的时候,我们常把它叫做array。</p><blockquote><p>关于array,我非常不喜欢“数组”这个翻译,因为这里面并不一定是数,也有可能是符,所以我会尽可能地使用array来表示它。</p></blockquote><p>在JavaScript中,定义一个array如下:</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#C792EA;">let</span><span style="color:#A6ACCD;"> nums </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> [</span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">4</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;">]</span></span></code></pre></div><p>对于array来讲,初始元素是方括号中的取值为0的时候的值。在方括号中的值我们称之为index(<strong>索引</strong>,奇葩翻译一般叫做<strong>下标</strong>)。这些索引以数字的形式出现,作为序号来表示数据在序列中的位置。</p><p>有个重点是,这里的索引是从<span class="katex"><span class="katex-mathml"><!----></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.64444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">0</span></span></span></span>开始,最大是序列长度-1,这其实也就是��什么我们在第三章讲过程的时候提到循环的写法的一个原因。</p><p>不过对于遍历序列来说还支持另外一种写法。</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;">(</span><span style="color:#C792EA;">let</span><span style="color:#A6ACCD;"> item </span><span style="color:#89DDFF;">of</span><span style="color:#A6ACCD;"> nums) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">item</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><p>不需要你去管什么索引了,这样子写就像是在说</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">对于 nums 里面的 item</span></span>
<span class="line"><span style="color:#A6ACCD;"> 输出 item 的值</span></span></code></pre></div><p>当然,在Python中看起来更自然:</p><div class="language-python"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> item </span><span style="color:#89DDFF;font-style:italic;">in</span><span style="color:#A6ACCD;"> nums</span><span style="color:#89DDFF;">:</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">print</span><span style="color:#89DDFF;">(</span><span style="color:#82AAFF;">item</span><span style="color:#89DDFF;">)</span></span></code></pre></div><h2 id="串" tabindex="-1">串 <a class="header-anchor" href="#串" aria-label="Permalink to "串""></a></h2><p>JavaScript中的字符串与array类似,自己维护了长度。但在早期的一些编程语言(如C语言)中,是没有做这种记录的,取而代之的是使用一个特定的标志来表示,这里是最后一个值为空。这种字符串也有另外一个名字,叫空结尾串(Null-terminated String)。</p><p>这种特殊标记就可以让我们界定一个序列的边界的另外一种方式。</p><p>我们可以来简单模拟一下这个行为:</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#C792EA;">let</span><span style="color:#A6ACCD;"> content </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> [</span><span style="color:#89DDFF;">'</span><span style="color:#C3E88D;">h</span><span style="color:#89DDFF;">'</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">'</span><span style="color:#C3E88D;">e</span><span style="color:#89DDFF;">'</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">'</span><span style="color:#C3E88D;">l</span><span style="color:#89DDFF;">'</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">'</span><span style="color:#C3E88D;">l</span><span style="color:#89DDFF;">'</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">'</span><span style="color:#C3E88D;">o</span><span style="color:#89DDFF;">'</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">null</span><span style="color:#A6ACCD;">]</span><span style="color:#89DDFF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 求长度:</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">length</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">nts</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">length</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#F07178;"> (</span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">item</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">of</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">nts</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">item</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">!=</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">null</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">length</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">++;</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">else</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">break</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">length</span><span style="color:#A6ACCD;">(content) </span><span style="color:#676E95;font-style:italic;">// 5</span></span></code></pre></div><p>而实际存放这个串的空间大小:</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">content</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length </span><span style="color:#676E95;font-style:italic;">// 6</span></span></code></pre></div><h2 id="可变长序列" tabindex="-1">可变长序列 <a class="header-anchor" href="#可变长序列" aria-label="Permalink to "可变长序列""></a></h2><p>试想你在一个笔记本上记录内容,每一行算是一个条目,当一页记录满以后,并不能连续地往下面记了,就需要翻到下一页纸。</p><p>连续不连续并不重要,重要的是我们能从这一页翻到下一页。</p><p>对应到我们的序列表示上,只要当前元素能够记录下一个元素的位置,是不是就表示我们的序列就能从第一个元素全部找出来了呢?</p><p>就像这张图片描述的:</p><p><img src="data:image/png;base64,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" alt="list"></p><p>这种结构被称为链接列表(也叫链表,Linked List)在上世纪五十年代就已经设计用于实际的程序。链表这种结构非常的灵活,可以很轻松的在任意位置添加或者删除数据。因为并不需要内存结构上的连续,所有的位序关系都是靠前一个元素和后一个元素之间的链接关系来确定,而添加或者删除数据只要改变一下这种链接关系就可以了。</p><p>但是对于链表来说一个很大的问题就是访问数据。比如我们要访问链表的第n个元素的时候,对于array和串这种结构来说,因为内存空间上是连续的,直接做一次加法就能找到,但是对于链表来说每次都要从第一个元素开始找起。而且,这种形式的链表又称作单链表(Singly Linked List),是没有办法从尾部往头部走的。</p><p>所以,在单链表的基础上,又构造了双链表(Double Linked List),每一个元素除了纪录自己对应的下一个元素之外,还要保存自己对应的上一个元素。这种时候如果做一些相邻元素的访问,就比单链表高效了一些。</p><p>比如,当我访问列表中第7个元素,然后再去访问第6个的时候,只要从第7个元素向前查找一次就可以了。</p><p>也许以后你可能还会听说到循环链表(Circular Linked List),或者是其他的形式,这些都离不开最初链表的思想:把数据和位置做关联。</p><h2 id="线性结构" tabindex="-1">线性结构 <a class="header-anchor" href="#线性结构" aria-label="Permalink to "线性结构""></a></h2><p>我们简单的做一个总结。</p><p>对于array,string和list我们都称为序列,原因其实是显而易见的。</p><p>首先,他们满足这样一点:所有的都是从头到尾连续地组织在一起,从任何地方出发都能找到下一个元素或者是到序列尾部。就像是在头和尾之间有一条线把他们串起来一样,而且在逻辑表示上,我们也是把他们放成一串。</p><p>另外,对于每一个元素,他们在序列中的位置是固定的,换句话说,序列中的元素是有前后顺序的。当我任意交换两个元素的位置,得到的新序列就跟原来的序列是不同的。</p><p>第三点就是,当我们从第一个元素开始找下去的时候,总是能找到最后一个元素(对于没有最后一个元素的情况,我们会在以后进行探讨)。</p><p>总结下来就是,序列是线性的(Linear)、有序的(Ordered,类比“排序过的(Sorted)”)和有穷的(Finite)。</p><h2 id="生成器" tabindex="-1">生成器 <a class="header-anchor" href="#生成器" aria-label="Permalink to "生成器""></a></h2><p>很多时候我们的序列是通过某种规则产生的,而这种规则</p><h3 id="练习-最长公共子序列-longest-common-subsequence" tabindex="-1">练习:最长公共子序列(Longest Common Subsequence) <a class="header-anchor" href="#练习-最长公共子序列-longest-common-subsequence" aria-label="Permalink to "练习:最长公共子序列(Longest Common Subsequence)""></a></h3><p>通常我们会对两个序列的内容进行对比,比较这两个序列有什么地方不同。这就是典型的LCS问题。LCS的应用很多,大部分版本控制系统的核心逻辑中就有它的存在。</p><p>请参阅Wikipedia对LCS问题的分析和讨论,尝试实现求LCS的算法,并试分析该算法要��迭代器至少要属于哪个category。</p></div></div></main><footer class="VPDocFooter" data-v-c4b0d3cf data-v-face870a><!--[--><!--]--><!----><div class="prev-next" data-v-face870a><div class="pager" data-v-face870a><a class="pager-link prev" href="/ch04_encoding.html" data-v-face870a><span class="desc" data-v-face870a>Previous page</span><span class="title" data-v-face870a>编码</span></a></div><div class="has-prev pager" data-v-face870a><a class="pager-link next" href="/ch06_data.html" data-v-face870a><span class="desc" data-v-face870a>Next page</span><span class="title" data-v-face870a>数据</span></a></div></div></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b2cf3e0b data-v-2f86ebd2><div class="container" data-v-2f86ebd2><!----><p class="copyright" data-v-2f86ebd2>CC-BY 4.0 Licensed | Copyright © 2015-present Kimmy Leo</p></div></footer><!--[--><!--]--></div></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"summary.md\":\"6e51fa23\",\"ch01_environment.md\":\"ad374fcf\",\"ch06_data.md\":\"8876a824\",\"ch10_object.md\":\"a4f3746e\",\"intro.md\":\"ca4ae51e\",\"glossary.md\":\"9584a1ea\",\"ch05_sequence.md\":\"e9066e5e\",\"ch11_concurrency.md\":\"2b82afad\",\"ch09_closure.md\":\"a7117936\",\"stream.md\":\"a4405d7c\",\"index.md\":\"a7ecfcb0\",\"ch07_state.md\":\"5efbe2c2\",\"ch04_encoding.md\":\"6d49b0e8\",\"ch02_computation.md\":\"d79955df\",\"ch03_procedure.md\":\"2caba3b4\",\"ch08_reference.md\":\"ea346374\"}")
__VP_SITE_DATA__ = JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"编程导引\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"编程导引\",\"link\":\"/intro\"}],\"sidebar\":[{\"text\":\"引言\",\"link\":\"/intro\"},{\"text\":\"环境\",\"link\":\"/ch01_environment\"},{\"text\":\"计算\",\"link\":\"/ch02_computation\"},{\"text\":\"过程\",\"link\":\"/ch03_procedure\"},{\"text\":\"编码\",\"link\":\"/ch04_encoding\"},{\"text\":\"序列\",\"link\":\"/ch05_sequence\"},{\"text\":\"数据\",\"link\":\"/ch06_data\"},{\"text\":\"状态\",\"link\":\"/ch07_state\"},{\"text\":\"引用\",\"link\":\"/ch08_reference\"},{\"text\":\"闭包\",\"link\":\"/ch09_closure\"},{\"text\":\"对象\",\"link\":\"/ch10_object\"},{\"text\":\"并发\",\"link\":\"/ch11_concurrency\"}],\"footer\":{\"copyright\":\"CC-BY 4.0 Licensed | Copyright © 2015-present Kimmy Leo\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}")</script>
</body>
</html>