mirror of
https://github.com/krahets/hello-algo.git
synced 2026-11-04 14:44:54 +08:00
5523 lines
822 KiB
HTML
5523 lines
822 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
<html class="no-js" lang="zh-Hant">
|
||
<head>
|
||
<meta charset="utf-8"/>
|
||
<meta content="width=device-width,initial-scale=1" name="viewport"/>
|
||
<meta content="動畫圖解、一鍵執行的資料結構與演算法教程" name="description"/>
|
||
<meta content="krahets" name="author"/>
|
||
<link href="https://www.hello-algo.com/zh-hant/chapter_computational_complexity/time_complexity/" rel="canonical"/>
|
||
<link href="../iteration_and_recursion/" rel="prev"/>
|
||
<link href="../space_complexity/" rel="next"/>
|
||
<link href="/chapter_computational_complexity/time_complexity/" hreflang="zh" rel="alternate"/>
|
||
<link href="/zh-hant/chapter_computational_complexity/time_complexity/" hreflang="zh-Hant" rel="alternate"/>
|
||
<link href="/en/chapter_computational_complexity/time_complexity/" hreflang="en" rel="alternate"/>
|
||
<link href="/ja/chapter_computational_complexity/time_complexity/" hreflang="ja" rel="alternate"/>
|
||
<link href="/ru/chapter_computational_complexity/time_complexity/" hreflang="ru" rel="alternate"/>
|
||
<link href="/ko/chapter_computational_complexity/time_complexity/" hreflang="ko" rel="alternate"/>
|
||
<link href="../../assets/images/favicon.png" rel="icon"/>
|
||
<meta content="zensical-0.0.51" name="generator"/>
|
||
<title>2.3 時間複雜度 - Hello 演算法</title>
|
||
<link href="../../assets/stylesheets/modern/main.62c9b9cc.min.css" rel="stylesheet"/>
|
||
<link href="../../assets/stylesheets/modern/palette.dfe2e883.min.css" rel="stylesheet"/>
|
||
|
||
|
||
<style>:root{--md-text-font:"Noto Sans TC";--md-code-font:"JetBrains Mono"}</style>
|
||
<link href="../../stylesheets/extra.css" rel="stylesheet"/>
|
||
<link href="../../stylesheets/animation_player.css" rel="stylesheet"/>
|
||
<script>__md_scope=new URL("../..",location),__md_scope.pathname.endsWith("/")||(__md_scope=new URL(__md_scope.pathname+"/",location)),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,_=__md_scope)=>JSON.parse(t.getItem(_.pathname+"."+e)),__md_set=(e,t,_=localStorage,a=__md_scope)=>{try{_.setItem(a.pathname+"."+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute("data-platform",navigator.platform)</script>
|
||
<script data-ha-shared-palette="1">
|
||
/* Share only the palette across language roots; other preferences stay scoped. */
|
||
(() => {
|
||
const get = __md_get;
|
||
const set = __md_set;
|
||
const shared = new URL("/", location);
|
||
__md_get = (key, storage = localStorage, scope = __md_scope) => {
|
||
if (key !== "__palette") return get(key, storage, scope);
|
||
let value = get(key, storage, shared);
|
||
// Adopt the current language's old preference only if none is shared yet.
|
||
if (value === null && scope.pathname !== shared.pathname) {
|
||
value = get(key, storage, scope);
|
||
if (value !== null) set(key, value, storage, shared);
|
||
}
|
||
return value;
|
||
};
|
||
__md_set = (key, value, storage = localStorage, scope = __md_scope) =>
|
||
set(key, value, storage, key === "__palette" ? shared : scope);
|
||
})();
|
||
</script>
|
||
<link href="/assets/figure-svg/css/2cd6b8e017161275ab3e7ced.css" rel="stylesheet"/><link href="/assets/figure-svg/css/c053e5d2507ba0f764c3d1cf.css" rel="stylesheet"/></head>
|
||
<body data-md-color-accent="teal" data-md-color-primary="white" data-md-color-scheme="default" dir="ltr">
|
||
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
|
||
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
|
||
<label aria-label="導航" class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
<a class="md-skip" href="#23">
|
||
跳轉至
|
||
</a>
|
||
</div>
|
||
<div data-md-component="announce">
|
||
<aside class="md-banner">
|
||
<div class="md-banner__inner md-grid md-typeset">
|
||
<div class="banner-svg">
|
||
<svg viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->
|
||
<path d="M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z"></path>
|
||
</svg>
|
||
<span>紙質書(簡體中文版)已發行,詳情請見<a href="/chapter_paperbook/">這裡</a></span>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
</div>
|
||
<header class="md-header md-header--shadow" data-md-component="header">
|
||
<nav aria-label="頁首" class="md-header__inner md-grid">
|
||
<a aria-label="Hello 演算法" class="md-header__button md-logo" data-md-component="logo" href="../.." title="Hello 演算法">
|
||
<img alt="Hello 演算法" src="../../assets/images/logo.svg"/>
|
||
</a>
|
||
<label aria-label="導航" class="md-header__button md-icon" for="__drawer">
|
||
<svg class="lucide lucide-menu" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 5h16M4 12h16M4 19h16"></path></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Hello 演算法
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
2.3 時間複雜度
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<form class="md-header__option" data-md-component="palette">
|
||
<input aria-label="深色模式" class="md-option" data-md-color-accent="teal" data-md-color-media="none" data-md-color-primary="white" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
|
||
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="深色模式">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7.5 2c-1.79 1.15-3 3.18-3 5.5s1.21 4.35 3.03 5.5C4.46 13 2 10.54 2 7.5A5.5 5.5 0 0 1 7.5 2m11.57 1.5 1.43 1.43L4.93 20.5 3.5 19.07zm-6.18 2.43L11.41 5 9.97 6l.42-1.7L9 3.24l1.75-.12.58-1.65L12 3.1l1.73.03-1.35 1.13zm-3.3 3.61-1.16-.73-1.12.78.34-1.32-1.09-.83 1.36-.09.45-1.29.51 1.27 1.36.03-1.05.87zM19 13.5a5.5 5.5 0 0 1-5.5 5.5c-1.22 0-2.35-.4-3.26-1.07l7.69-7.69c.67.91 1.07 2.04 1.07 3.26m-4.4 6.58 2.77-1.15-.24 3.35zm4.33-2.7 1.15-2.77 2.2 2.54zm1.15-4.96-1.14-2.78 3.34.24zM9.63 18.93l2.77 1.15-2.53 2.19z"></path></svg>
|
||
</label>
|
||
<input aria-label="淺色模式" class="md-option" data-md-color-accent="teal" data-md-color-media="none" data-md-color-primary="black" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
|
||
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="淺色模式">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7.5 2c-1.79 1.15-3 3.18-3 5.5s1.21 4.35 3.03 5.5C4.46 13 2 10.54 2 7.5A5.5 5.5 0 0 1 7.5 2m11.57 1.5 1.43 1.43L4.93 20.5 3.5 19.07zm-6.18 2.43L11.41 5 9.97 6l.42-1.7L9 3.24l1.75-.12.58-1.65L12 3.1l1.73.03-1.35 1.13zm-3.3 3.61-1.16-.73-1.12.78.34-1.32-1.09-.83 1.36-.09.45-1.29.51 1.27 1.36.03-1.05.87zM19 13.5a5.5 5.5 0 0 1-5.5 5.5c-1.22 0-2.35-.4-3.26-1.07l7.69-7.69c.67.91 1.07 2.04 1.07 3.26m-4.4 6.58 2.77-1.15-.24 3.35zm4.33-2.7 1.15-2.77 2.2 2.54zm1.15-4.96-1.14-2.78 3.34.24zM9.63 18.93l2.77 1.15-2.53 2.19z"></path></svg>
|
||
</label>
|
||
</form>
|
||
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
<div class="md-header__option">
|
||
<div class="md-select">
|
||
<button aria-label="選擇語言" class="md-header__button md-icon">
|
||
<svg class="lucide lucide-languages" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6"></path></svg>
|
||
</button>
|
||
<div class="md-select__inner">
|
||
<ul class="md-select__list">
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/chapter_computational_complexity/time_complexity/" hreflang="zh">
|
||
简体中文
|
||
</a>
|
||
</li>
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/zh-hant/chapter_computational_complexity/time_complexity/" hreflang="zh-Hant">
|
||
繁體中文
|
||
</a>
|
||
</li>
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/en/chapter_computational_complexity/time_complexity/" hreflang="en">
|
||
English
|
||
</a>
|
||
</li>
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/ja/chapter_computational_complexity/time_complexity/" hreflang="ja">
|
||
日本語
|
||
</a>
|
||
</li>
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/ru/chapter_computational_complexity/time_complexity/" hreflang="ru">
|
||
Русский
|
||
</a>
|
||
</li>
|
||
<li class="md-select__item">
|
||
<a class="md-select__link" href="/ko/chapter_computational_complexity/time_complexity/" hreflang="ko">
|
||
한국어
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<label aria-label="搜尋" class="md-header__button md-icon" for="__search">
|
||
<svg class="lucide lucide-search" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg>
|
||
</label>
|
||
<div aria-label="搜尋" class="md-search" data-md-component="search" role="dialog">
|
||
<button class="md-search__button" type="button">
|
||
搜尋
|
||
</button>
|
||
</div>
|
||
<div class="md-header__source">
|
||
<a class="md-source" data-md-component="source" href="https://github.com/krahets/hello-algo" title="前往倉庫">
|
||
<div class="md-source__icon md-icon">
|
||
<svg viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2" fill="currentColor"></path></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
krahets/hello-algo
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</nav>
|
||
</header>
|
||
<div class="md-container" data-md-component="container">
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
<nav aria-label="導航" class="md-nav md-nav--primary" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a aria-label="Hello 演算法" class="md-nav__button md-logo" data-md-component="logo" href="../.." title="Hello 演算法">
|
||
<img alt="Hello 演算法" src="../../assets/images/logo.svg"/>
|
||
</a>
|
||
Hello 演算法
|
||
</label>
|
||
<div class="md-nav__source">
|
||
<a class="md-source" data-md-component="source" href="https://github.com/krahets/hello-algo" title="前往倉庫">
|
||
<div class="md-source__icon md-icon">
|
||
<svg viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2" fill="currentColor"></path></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
krahets/hello-algo
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_hello_algo/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m13.13 22.19-1.63-3.83c1.57-.58 3.04-1.36 4.4-2.27zM5.64 12.5l-3.83-1.63 6.1-2.77C7 9.46 6.22 10.93 5.64 12.5M19.22 4c.28 0 .53 0 .74.05.17 1.39-.02 4.25-3.3 7.53-1.7 1.71-3.73 3.02-6.01 3.89l-2.15-2.1c.92-2.31 2.23-4.34 3.92-6.03C15.18 4.58 17.64 4 19.22 4m0-2c-1.98 0-4.98.69-8.22 3.93-2.19 2.19-3.5 4.6-4.35 6.71-.28.75-.09 1.57.46 2.13l2.13 2.12c.38.38.89.61 1.42.61.23 0 .47-.06.7-.15A19.1 19.1 0 0 0 18.07 13c5.66-5.66 3.54-10.61 3.54-10.61S20.7 2 19.22 2m-4.68 7.46c-.78-.78-.78-2.05 0-2.83s2.05-.78 2.83 0c.77.78.78 2.05 0 2.83s-2.05.78-2.83 0m-5.66 7.07-1.41-1.41zM6.24 22l3.64-3.64c-.34-.09-.67-.24-.97-.45L4.83 22zM2 22h1.41l4.77-4.76-1.42-1.41L2 20.59zm0-2.83 4.09-4.08c-.21-.3-.36-.62-.45-.97L2 17.76z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
序
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_2" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_preface/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M21 4H3a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M3 19V6h8v13zm18 0h-8V6h8zm-7-9.5h6V11h-6zm0 2.5h6v1.5h-6zm0 2.5h6V16h-6z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 0 章 前言
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_2_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 0 章 前言
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_preface/about_the_book/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
0.1 關於本書
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_preface/suggestions/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
0.2 如何使用本書
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_preface/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
0.3 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_3" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_introduction/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 16H5V5h14zM6.2 7.7h5v1.5h-5zm6.8 8.1h5v1.5h-5zm0-2.6h5v1.5h-5zM8 18h1.5v-2h2v-1.5h-2v-2H8v2H6V16h2zm6.1-7.1 1.4-1.4 1.4 1.4 1.1-1-1.4-1.4L18 7.1 16.9 6l-1.4 1.4L14.1 6 13 7.1l1.4 1.4L13 9.9z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 1 章 初識演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_3_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 1 章 初識演算法
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_introduction/algorithms_are_everywhere/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
1.1 演算法無處不在
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_introduction/what_is_dsa/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
1.2 演算法是什麼
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_introduction/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
1.3 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
<input checked="" class="md-nav__toggle md-toggle" id="__nav_4" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 2h12v6l-4 4 4 4v6H6v-6l4-4-4-4zm10 14.5-4-4-4 4V20h8zm-4-5 4-4V4H8v3.5zM10 6h4v.75l-2 2-2-2z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 2 章 複雜度分析
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="true" aria-labelledby="__nav_4_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 2 章 複雜度分析
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../performance_evaluation/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.1 演算法效率評估
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../iteration_and_recursion/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.2 迭代與遞迴
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--active">
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.3 時間複雜度
|
||
|
||
|
||
</span>
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<a class="md-nav__link md-nav__link--active" href="././">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.3 時間複雜度
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<nav aria-label="目錄" class="md-nav md-nav--secondary">
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
目錄
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#231">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.1 統計時間增長趨勢
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#232">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.2 函式漸近上界
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#233">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.3 推算方法
|
||
</span>
|
||
</span>
|
||
</a>
|
||
<nav aria-label="2.3.3 推算方法" class="md-nav">
|
||
<ul class="md-nav__list">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#1">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
1. 第一步:統計操作數量
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#2">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2. 第二步:判斷漸近上界
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#234">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.4 常見型別
|
||
</span>
|
||
</span>
|
||
</a>
|
||
<nav aria-label="2.3.4 常見型別" class="md-nav">
|
||
<ul class="md-nav__list">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#1-o1">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
1. 常數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#2-on">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2. 線性階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#3-on2">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
3. 平方階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#4-o2n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
4. 指數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#5-olog-n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
5. 對數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#6-on-log-n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
6. 線性對數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#7-on">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
7. 階乘階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#235">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.5 最差、最佳、平均時間複雜度
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../space_complexity/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.4 空間複雜度
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
2.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_5" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M11 13.5v8H3v-8zm-2 2H5v4h4zM12 2l5.5 9h-11zm0 3.86L10.08 9h3.84zM17.5 13c2.5 0 4.5 2 4.5 4.5S20 22 17.5 22 13 20 13 17.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 3 章 資料結構
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_5_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 3 章 資料結構
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/classification_of_data_structure/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.1 資料結構分類
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/basic_data_types/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.2 基本資料型別
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/number_encoding/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.3 數字編碼 *
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/character_encoding/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.4 字元編碼 *
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_data_structure/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
3.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_6" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 5v14h17V5zm4 2v2H5V7zm-2 6v-2h2v2zm0 2h2v2H5zm13 2H9v-2h9zm0-4H9v-2h9zm0-4H9V7h9z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 4 章 陣列與鏈結串列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_6_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 4 章 陣列與鏈結串列
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/array/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.1 陣列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/linked_list/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.2 鏈結串列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/list/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.3 串列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/ram_and_cache/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.4 記憶體與快取 *
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_array_and_linkedlist/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
4.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_7" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17.36 20.2v-5.38h1.79V22H3v-7.18h1.8v5.38zM6.77 14.32l.37-1.76 8.79 1.85-.37 1.76zm1.16-4.21.76-1.61 8.14 3.78-.76 1.62zm2.26-3.99 1.15-1.38 6.9 5.76-1.15 1.37zm4.45-4.25L20 9.08l-1.44 1.07-5.36-7.21zM6.59 18.41v-1.8h8.98v1.8z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 5 章 堆疊與佇列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_7_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 5 章 堆疊與佇列
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/stack/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
5.1 堆疊
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/queue/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
5.2 佇列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/deque/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
5.3 雙向佇列
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
5.4 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_stack_and_queue/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
5.5 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_8" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_hashing/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.3 17.89c1.32-2.1.7-4.89-1.41-6.21a4.52 4.52 0 0 0-6.21 1.41C10.36 15.2 11 18 13.09 19.3c1.47.92 3.33.92 4.8 0L21 22.39 22.39 21zm-2-.62c-.98.98-2.56.97-3.54 0-.97-.98-.97-2.56.01-3.54.97-.97 2.55-.97 3.53 0 .96.99.95 2.57-.03 3.54zM19 4H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.81a6.3 6.3 0 0 1-1.31-2H5v-4h4.18c.16-.71.43-1.39.82-2H5V8h6v2.81a6.3 6.3 0 0 1 2-1.31V8h6v2a6.499 6.499 0 0 1 2 2V6a2 2 0 0 0-2-2"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 6 章 雜湊表
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_8_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 6 章 雜湊表
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_hashing/hash_map/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
6.1 雜湊表
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_hashing/hash_collision/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
6.2 雜湊衝突
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_hashing/hash_algorithm/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
6.3 雜湊演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_hashing/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
6.4 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_hashing/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
6.5 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_9" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_tree/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.5 17c-.14 0-.26 0-.39.04L17.5 13.8c.45-.45.75-1.09.75-1.8a2.5 2.5 0 0 0-2.5-2.5c-.14 0-.25 0-.4.04L13.74 6.3c.47-.46.76-1.09.76-1.8a2.5 2.5 0 0 0-5 0c0 .7.29 1.34.76 1.79L8.65 9.54c-.15-.04-.26-.04-.4-.04a2.5 2.5 0 0 0-2.5 2.5c0 .71.29 1.34.75 1.79l-1.61 3.25C4.76 17 4.64 17 4.5 17a2.5 2.5 0 0 0 0 5A2.5 2.5 0 0 0 7 19.5c0-.7-.29-1.34-.76-1.79l1.62-3.25c.14.04.26.04.39.04s.25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0A2.5 2.5 0 0 0 12 17c-.13 0-.26 0-.39.04L10 13.8c.45-.45.75-1.09.75-1.8 0-.7-.29-1.33-.75-1.79l1.61-3.25c.13.04.26.04.39.04s.26 0 .39-.04L14 10.21a2.5 2.5 0 0 0 1.75 4.29c.13 0 .25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0 2.5 2.5 0 0 0-2.5-2.5m-15 3.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1m8.5-1c0 .55-.45 1-1 1s-1-.45-1-1 .45-1 1-1 1 .45 1 1M7.25 12c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1M11 4.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m3.75 7.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m4.75 8.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 7 章 樹
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_9_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 7 章 樹
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/binary_tree/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.1 二元樹
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/binary_tree_traversal/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.2 二元樹走訪
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/array_representation_of_tree/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.3 二元樹陣列表示
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/binary_search_tree/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.4 二元搜尋樹
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/avl_tree/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.5 AVL *
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.6 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_tree/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
7.7 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_10" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_heap/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 1a2.5 2.5 0 0 0-2.5 2.5A2.5 2.5 0 0 0 11 5.79V7H7a2 2 0 0 0-2 2v.71A2.5 2.5 0 0 0 3.5 12 2.5 2.5 0 0 0 5 14.29V15H4a2 2 0 0 0-2 2v1.21A2.5 2.5 0 0 0 .5 20.5 2.5 2.5 0 0 0 3 23a2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 4 18.21V17h4v1.21a2.5 2.5 0 0 0-1.5 2.29A2.5 2.5 0 0 0 9 23a2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-1.5-2.29V17a2 2 0 0 0-2-2H7v-.71A2.5 2.5 0 0 0 8.5 12 2.5 2.5 0 0 0 7 9.71V9h10v.71A2.5 2.5 0 0 0 15.5 12a2.5 2.5 0 0 0 1.5 2.29V15h-1a2 2 0 0 0-2 2v1.21a2.5 2.5 0 0 0-1.5 2.29A2.5 2.5 0 0 0 15 23a2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-1.5-2.29V17h4v1.21a2.5 2.5 0 0 0-1.5 2.29A2.5 2.5 0 0 0 21 23a2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-1.5-2.29V17a2 2 0 0 0-2-2h-1v-.71A2.5 2.5 0 0 0 20.5 12 2.5 2.5 0 0 0 19 9.71V9a2 2 0 0 0-2-2h-4V5.79a2.5 2.5 0 0 0 1.5-2.29A2.5 2.5 0 0 0 12 1m0 1.5a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1M6 11a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m12 0a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1M3 19.5a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m6 0a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m6 0a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m6 0a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 8 章 堆積
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_10_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 8 章 堆積
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_heap/heap/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
8.1 堆積
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_heap/build_heap/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
8.2 建堆積操作
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_heap/top_k/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
8.3 Top-k 問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_heap/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
8.4 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_heap/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
8.5 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_11" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_graph/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 5.37-.44-.06L6 14.9c.24.21.4.48.47.78h11.06c.07-.3.23-.57.47-.78l-5.56-9.59zM6.6 16.53l4.28 2.53c.29-.27.69-.43 1.12-.43s.83.16 1.12.43l4.28-2.53zM12 22a1.68 1.68 0 0 1-1.68-1.68l.09-.56-4.3-2.55c-.31.36-.76.58-1.27.58a1.68 1.68 0 0 1-1.68-1.68c0-.79.53-1.45 1.26-1.64V9.36c-.83-.11-1.47-.82-1.47-1.68A1.68 1.68 0 0 1 4.63 6c.55 0 1.03.26 1.34.66l4.41-2.53-.06-.45c0-.93.75-1.68 1.68-1.68s1.68.75 1.68 1.68l-.06.45 4.41 2.53c.31-.4.79-.66 1.34-.66a1.68 1.68 0 0 1 1.68 1.68c0 .86-.64 1.57-1.47 1.68v5.11c.73.19 1.26.85 1.26 1.64a1.68 1.68 0 0 1-1.68 1.68c-.51 0-.96-.22-1.27-.58l-4.3 2.55.09.56A1.68 1.68 0 0 1 12 22M10.8 4.86 6.3 7.44l.02.24c0 .71-.44 1.32-1.06 1.57l.03 5.25zm2.4 0 5.51 9.64.03-5.25c-.62-.25-1.06-.86-1.06-1.57l.02-.24z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 9 章 圖
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_11_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_11">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 9 章 圖
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_graph/graph/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
9.1 圖
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_graph/graph_operations/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
9.2 圖基礎操作
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_graph/graph_traversal/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
9.3 圖的走訪
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_graph/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
9.4 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_graph/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
9.5 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_12" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_searching/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m19.31 18.9 3.08 3.1L21 23.39l-3.12-3.07c-.69.43-1.51.68-2.38.68-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5c0 .88-.25 1.71-.69 2.4m-3.81.1a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 0 0 5M21 4v2H3V4zM3 16v-2h6v2zm0-5V9h18v2h-2.03c-1.01-.63-2.2-1-3.47-1s-2.46.37-3.47 1z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 10 章 搜尋
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_12_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 10 章 搜尋
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/binary_search/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.1 二分搜尋
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/binary_search_insertion/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.2 二分搜尋插入點
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/binary_search_edge/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.3 二分搜尋邊界
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/replace_linear_by_hashing/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.4 雜湊最佳化策略
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/searching_algorithm_revisited/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.5 重識搜尋演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.6 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_searching/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
10.7 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_13" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_sorting/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 17h3l-4 4-4-4h3V3h2M2 17h10v2H2M6 5v2H2V5m0 6h7v2H2z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 11 章 排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_13_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_13">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 11 章 排序
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/sorting_algorithm/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.1 排序演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/selection_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.2 選擇排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/bubble_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.3 泡沫排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/insertion_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.4 插入排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/quick_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.5 快速排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/merge_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.6 合併排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/heap_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.7 堆積排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/bucket_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.8 桶排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/counting_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.9 計數排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/radix_sort/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.10 基數排序
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.11 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_sorting/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
11.12 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_14" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17 7v2h5V7zM2 9v6h5V9zm10 0v2H9v2h3v2l3-3zm5 2v2h5v-2zm0 4v2h5v-2z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 12 章 分治
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_14_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_14">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 12 章 分治
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/divide_and_conquer/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.1 分治演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/binary_search_recur/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.2 分治搜尋策略
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/build_binary_tree_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.3 構建樹問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/hanota_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.4 河內塔問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_divide_and_conquer/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
12.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_15" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M18 15a3 3 0 0 1 3 3 3 3 0 0 1-3 3 2.99 2.99 0 0 1-2.83-2H14v-2h1.17c.41-1.17 1.52-2 2.83-2m0 2a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1m0-9a1.43 1.43 0 0 0 1.43-1.43 1.43 1.43 0 1 0-2.86 0A1.43 1.43 0 0 0 18 8m0-5.43a4 4 0 0 1 4 4C22 9.56 18 14 18 14s-4-4.44-4-7.43a4 4 0 0 1 4-4M8.83 17H10v2H8.83A2.99 2.99 0 0 1 6 21a3 3 0 0 1-3-3c0-1.31.83-2.42 2-2.83V14h2v1.17c.85.3 1.53.98 1.83 1.83M6 17a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1M6 3a3 3 0 0 1 3 3c0 1.31-.83 2.42-2 2.83V10H5V8.83A2.99 2.99 0 0 1 3 6a3 3 0 0 1 3-3m0 2a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1m5 14v-2h2v2zm-4-6H5v-2h2z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 13 章 回溯
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_15_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_15">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 13 章 回溯
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/backtracking_algorithm/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.1 回溯演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/permutations_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.2 全排列問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/subset_sum_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.3 子集和問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/n_queens_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.4 N 皇后問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_backtracking/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
13.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_16" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M22 15h-2v3c0 1.11-.89 2-2 2h-3v2l-3-3 3-3v2h3v-3h-2l3-3zm0-11v4c0 1.1-.9 2-2 2H10v10c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2M4 8h4V4H4zm0 2v4h4v-4zm4 10v-4H4v4zm6-12V4h-4v4zm6-4h-4v4h4z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 14 章 動態規劃
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_16_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_16">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 14 章 動態規劃
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/intro_to_dynamic_programming/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.1 初探動態規劃
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/dp_problem_features/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.2 DP 問題特性
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/dp_solution_pipeline/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.3 DP 解題思路
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/knapsack_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.4 0-1 背包問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/unbounded_knapsack_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.5 完全背包問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/edit_distance_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.6 編輯距離問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.7 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_dynamic_programming/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
14.8 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_17" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_greedy/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M13 3c3.88 0 7 3.14 7 7 0 2.8-1.63 5.19-4 6.31V21H9v-3H8c-1.11 0-2-.89-2-2v-3H4.5c-.42 0-.66-.5-.42-.81L6 9.66A7.003 7.003 0 0 1 13 3m0-2C8.41 1 4.61 4.42 4.06 8.9L2.5 11h-.03l-.02.03c-.55.76-.62 1.76-.19 2.59.36.69 1 1.17 1.74 1.32V16c0 1.85 1.28 3.42 3 3.87V23h11v-5.5c2.5-1.67 4-4.44 4-7.5 0-4.97-4.04-9-9-9m4 7.83c0 1.54-1.36 2.77-3.42 4.64L13 14l-.58-.53C10.36 11.6 9 10.37 9 8.83c0-1.2.96-2.19 2.16-2.2h.04c.69 0 1.35.31 1.8.83.45-.52 1.11-.83 1.8-.83 1.2-.01 2.2.96 2.2 2.16z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 15 章 貪婪
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_17" id="__nav_17_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_17_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_17">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 15 章 貪婪
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/greedy_algorithm/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.1 貪婪演算法
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/fractional_knapsack_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.2 分數背包問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/max_capacity_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.3 最大容量問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/max_product_cutting_problem/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.4 最大切分乘積問題
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/summary/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.5 小結
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_greedy/exercises/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
15.6 練習
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_18" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_appendix/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M11 18h2v-2h-2zm1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
第 16 章 附錄
|
||
|
||
|
||
</span>
|
||
</a>
|
||
<label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_18_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_18">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
第 16 章 附錄
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_appendix/installation/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
16.1 程式設計環境安裝
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_appendix/contribution/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
16.2 一起參與創作
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="../../chapter_appendix/terminology/">
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
16.3 術語表
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
<input class="md-nav__toggle md-toggle" id="__nav_19" type="checkbox"/>
|
||
<div class="md-nav__link md-nav__container">
|
||
<a class="md-nav__link" href="../../chapter_reference/">
|
||
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9 3v15h3V3zm3 2 4 13 3-1-4-13zM5 5v13h3V5zM3 19v2h18v-2z"></path></svg>
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
參考文獻
|
||
|
||
|
||
</span>
|
||
</a>
|
||
</div>
|
||
<nav aria-expanded="false" aria-labelledby="__nav_19_label" class="md-nav" data-md-level="1">
|
||
<label class="md-nav__title" for="__nav_19">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
參考文獻
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix="">
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
|
||
<div class="md-sidebar__scrollwrap">
|
||
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
|
||
<div class="md-sidebar-button__wrapper">
|
||
<label class="md-sidebar-button" for="__toc"></label>
|
||
</div>
|
||
<div class="md-sidebar__inner">
|
||
<nav aria-label="目錄" class="md-nav md-nav--secondary">
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
目錄
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#231">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.1 統計時間增長趨勢
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#232">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.2 函式漸近上界
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#233">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.3 推算方法
|
||
</span>
|
||
</span>
|
||
</a>
|
||
<nav aria-label="2.3.3 推算方法" class="md-nav">
|
||
<ul class="md-nav__list">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#1">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
1. 第一步:統計操作數量
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#2">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2. 第二步:判斷漸近上界
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#234">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.4 常見型別
|
||
</span>
|
||
</span>
|
||
</a>
|
||
<nav aria-label="2.3.4 常見型別" class="md-nav">
|
||
<ul class="md-nav__list">
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#1-o1">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
1. 常數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#2-on">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2. 線性階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#3-on2">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
3. 平方階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#4-o2n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
4. 指數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#5-olog-n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
5. 對數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#6-on-log-n">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
6. 線性對數階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#7-on">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
7. 階乘階
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
<li class="md-nav__item">
|
||
<a class="md-nav__link" href="#235">
|
||
<span class="md-ellipsis">
|
||
<span class="md-typeset">
|
||
2.3.5 最差、最佳、平均時間複雜度
|
||
</span>
|
||
</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
<!-- Tags -->
|
||
<!-- Actions -->
|
||
<!-- Actions -->
|
||
<!-- Edit button -->
|
||
<a class="md-content__button md-icon" href="https://github.com/krahets/hello-algo/tree/main/zh-hant/docs/chapter_computational_complexity/time_complexity.md" title="編輯此頁">
|
||
<svg viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M441 58.9 453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2 344 121.9l46.1 46.1-134.3 134.2c-2.9 2.9-6.5 5-10.4 6.1L186.9 325l16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25 175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25c-28.1-28.1-73.7-28.1-101.8 0M88 64c-48.6 0-88 39.4-88 88v272c0 48.6 39.4 88 88 88h272c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24v112c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40h112c13.3 0 24-10.7 24-24s-10.7-24-24-24z" fill="currentColor"></path></svg>
|
||
</a>
|
||
<!-- View button -->
|
||
<!-- Page content -->
|
||
<h1 id="23">2.3 時間複雜度<a class="headerlink" href="#23" title="Permanent link">¶</a></h1>
|
||
<p>執行時間可以直觀且準確地反映演算法的效率。如果我們想準確預估一段程式碼的執行時間,應該如何操作呢?</p>
|
||
<ol>
|
||
<li><strong>確定執行平臺</strong>,包括硬體配置、程式語言、系統環境等,這些因素都會影響程式碼的執行效率。</li>
|
||
<li><strong>評估各種計算操作所需的執行時間</strong>,例如加法操作 <code>+</code> 需要 1 ns ,乘法操作 <code>*</code> 需要 10 ns ,列印操作 <code>print()</code> 需要 5 ns 等。</li>
|
||
<li><strong>統計程式碼中所有的計算操作</strong>,並將所有操作的執行時間求和,從而得到執行時間。</li>
|
||
</ol>
|
||
<p>例如在以下程式碼中,輸入資料大小為 <span class="arithmatex">\(n\)</span> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="1:13"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio"/><input id="__tabbed_1_2" name="__tabbed_1" type="radio"/><input id="__tabbed_1_3" name="__tabbed_1" type="radio"/><input id="__tabbed_1_4" name="__tabbed_1" type="radio"/><input id="__tabbed_1_5" name="__tabbed_1" type="radio"/><input id="__tabbed_1_6" name="__tabbed_1" type="radio"/><input id="__tabbed_1_7" name="__tabbed_1" type="radio"/><input id="__tabbed_1_8" name="__tabbed_1" type="radio"/><input id="__tabbed_1_9" name="__tabbed_1" type="radio"/><input id="__tabbed_1_10" name="__tabbed_1" type="radio"/><input id="__tabbed_1_11" name="__tabbed_1" type="radio"/><input id="__tabbed_1_12" name="__tabbed_1" type="radio"/><input id="__tabbed_1_13" name="__tabbed_1" type="radio"/><div class="tabbed-labels"><label for="__tabbed_1_1">Python</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Java</label><label for="__tabbed_1_4">C#</label><label for="__tabbed_1_5">Go</label><label for="__tabbed_1_6">Swift</label><label for="__tabbed_1_7">JS</label><label for="__tabbed_1_8">TS</label><label for="__tabbed_1_9">Dart</label><label for="__tabbed_1_10">Rust</label><label for="__tabbed_1_11">C</label><label for="__tabbed_1_12">Kotlin</label><label for="__tabbed_1_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-0-1" id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="c1"># 在某執行平臺下</span>
|
||
<a href="#__codelineno-0-2" id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-0-3" id="__codelineno-0-3" name="__codelineno-0-3"></a> <span class="n">a</span> <span class="o">=</span> <span class="mi">2</span> <span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-0-4" id="__codelineno-0-4" name="__codelineno-0-4"></a> <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">1</span> <span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-0-5" id="__codelineno-0-5" name="__codelineno-0-5"></a> <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">*</span> <span class="mi">2</span> <span class="c1"># 10 ns</span>
|
||
<a href="#__codelineno-0-6" id="__codelineno-0-6" name="__codelineno-0-6"></a> <span class="c1"># 迴圈 n 次</span>
|
||
<a href="#__codelineno-0-7" id="__codelineno-0-7" name="__codelineno-0-7"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span> <span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-0-8" id="__codelineno-0-8" name="__codelineno-0-8"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># 5 ns</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-1-1" id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-1-2" id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-1-3" id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-1-4" id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-1-5" id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-1-6" id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-1-7" id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-1-8" id="__codelineno-1-8" name="__codelineno-1-8"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-1-9" id="__codelineno-1-9" name="__codelineno-1-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-1-10" id="__codelineno-1-10" name="__codelineno-1-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-2-1" id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-2-2" id="__codelineno-2-2" name="__codelineno-2-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-2-3" id="__codelineno-2-3" name="__codelineno-2-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-2-4" id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-2-5" id="__codelineno-2-5" name="__codelineno-2-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-2-6" id="__codelineno-2-6" name="__codelineno-2-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-2-7" id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-2-8" id="__codelineno-2-8" name="__codelineno-2-8"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-2-9" id="__codelineno-2-9" name="__codelineno-2-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-2-10" id="__codelineno-2-10" name="__codelineno-2-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-3-1" id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-3-2" id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="k">void</span><span class="w"> </span><span class="nf">Algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-3-3" id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-3-4" id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-3-5" id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-3-6" id="__codelineno-3-6" name="__codelineno-3-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-3-7" id="__codelineno-3-7" name="__codelineno-3-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-3-8" id="__codelineno-3-8" name="__codelineno-3-8"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-3-9" id="__codelineno-3-9" name="__codelineno-3-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-3-10" id="__codelineno-3-10" name="__codelineno-3-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-4-1" id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-4-2" id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-4-3" id="__codelineno-4-3" name="__codelineno-4-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-4-4" id="__codelineno-4-4" name="__codelineno-4-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-4-5" id="__codelineno-4-5" name="__codelineno-4-5"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-4-6" id="__codelineno-4-6" name="__codelineno-4-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-4-7" id="__codelineno-4-7" name="__codelineno-4-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-4-8" id="__codelineno-4-8" name="__codelineno-4-8"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-4-9" id="__codelineno-4-9" name="__codelineno-4-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-4-10" id="__codelineno-4-10" name="__codelineno-4-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-5-1" id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-5-2" id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-5-3" id="__codelineno-5-3" name="__codelineno-5-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-5-4" id="__codelineno-5-4" name="__codelineno-5-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-5-5" id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-5-6" id="__codelineno-5-6" name="__codelineno-5-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-5-7" id="__codelineno-5-7" name="__codelineno-5-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-5-8" id="__codelineno-5-8" name="__codelineno-5-8"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-5-9" id="__codelineno-5-9" name="__codelineno-5-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-5-10" id="__codelineno-5-10" name="__codelineno-5-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-6-1" id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-6-2" id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-6-3" id="__codelineno-6-3" name="__codelineno-6-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-6-4" id="__codelineno-6-4" name="__codelineno-6-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-6-5" id="__codelineno-6-5" name="__codelineno-6-5"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-6-6" id="__codelineno-6-6" name="__codelineno-6-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-6-7" id="__codelineno-6-7" name="__codelineno-6-7"></a><span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-6-8" id="__codelineno-6-8" name="__codelineno-6-8"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-6-9" id="__codelineno-6-9" name="__codelineno-6-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-6-10" id="__codelineno-6-10" name="__codelineno-6-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-7-1" id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-7-2" id="__codelineno-7-2" name="__codelineno-7-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-7-3" id="__codelineno-7-3" name="__codelineno-7-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-7-4" id="__codelineno-7-4" name="__codelineno-7-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-7-5" id="__codelineno-7-5" name="__codelineno-7-5"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-7-6" id="__codelineno-7-6" name="__codelineno-7-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-7-7" id="__codelineno-7-7" name="__codelineno-7-7"></a><span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-7-8" id="__codelineno-7-8" name="__codelineno-7-8"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-7-9" id="__codelineno-7-9" name="__codelineno-7-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-7-10" id="__codelineno-7-10" name="__codelineno-7-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-8-1" id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-8-2" id="__codelineno-8-2" name="__codelineno-8-2"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-8-3" id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-8-4" id="__codelineno-8-4" name="__codelineno-8-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-8-5" id="__codelineno-8-5" name="__codelineno-8-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="m">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-8-6" id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-8-7" id="__codelineno-8-7" name="__codelineno-8-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-8-8" id="__codelineno-8-8" name="__codelineno-8-8"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-8-9" id="__codelineno-8-9" name="__codelineno-8-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-8-10" id="__codelineno-8-10" name="__codelineno-8-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-9-1" id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-9-2" id="__codelineno-9-2" name="__codelineno-9-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-9-3" id="__codelineno-9-3" name="__codelineno-9-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-9-4" id="__codelineno-9-4" name="__codelineno-9-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-9-5" id="__codelineno-9-5" name="__codelineno-9-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-9-6" id="__codelineno-9-6" name="__codelineno-9-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-9-7" id="__codelineno-9-7" name="__codelineno-9-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-9-8" id="__codelineno-9-8" name="__codelineno-9-8"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-9-9" id="__codelineno-9-9" name="__codelineno-9-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-9-10" id="__codelineno-9-10" name="__codelineno-9-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-10-1" id="__codelineno-10-1" name="__codelineno-10-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-10-2" id="__codelineno-10-2" name="__codelineno-10-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-10-3" id="__codelineno-10-3" name="__codelineno-10-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-10-4" id="__codelineno-10-4" name="__codelineno-10-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-10-5" id="__codelineno-10-5" name="__codelineno-10-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-10-6" id="__codelineno-10-6" name="__codelineno-10-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-10-7" id="__codelineno-10-7" name="__codelineno-10-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-10-8" id="__codelineno-10-8" name="__codelineno-10-8"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-10-9" id="__codelineno-10-9" name="__codelineno-10-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-10-10" id="__codelineno-10-10" name="__codelineno-10-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-11-1" id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="c1">// 在某執行平臺下</span>
|
||
<a href="#__codelineno-11-2" id="__codelineno-11-2" name="__codelineno-11-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-11-3" id="__codelineno-11-3" name="__codelineno-11-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-11-4" id="__codelineno-11-4" name="__codelineno-11-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-11-5" id="__codelineno-11-5" name="__codelineno-11-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="c1">// 10 ns</span>
|
||
<a href="#__codelineno-11-6" id="__codelineno-11-6" name="__codelineno-11-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-11-7" id="__codelineno-11-7" name="__codelineno-11-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// 1 ns</span>
|
||
<a href="#__codelineno-11-8" id="__codelineno-11-8" name="__codelineno-11-8"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span><span class="w"> </span><span class="c1">// 5 ns</span>
|
||
<a href="#__codelineno-11-9" id="__codelineno-11-9" name="__codelineno-11-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-11-10" id="__codelineno-11-10" name="__codelineno-11-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-12-1" id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="c1"># 在某執行平臺下</span>
|
||
<a href="#__codelineno-12-2" id="__codelineno-12-2" name="__codelineno-12-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-12-3" id="__codelineno-12-3" name="__codelineno-12-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-12-4" id="__codelineno-12-4" name="__codelineno-12-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-12-5" id="__codelineno-12-5" name="__codelineno-12-5"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1"># 10 ns</span>
|
||
<a href="#__codelineno-12-6" id="__codelineno-12-6" name="__codelineno-12-6"></a><span class="w"> </span><span class="c1"># 迴圈 n 次</span>
|
||
<a href="#__codelineno-12-7" id="__codelineno-12-7" name="__codelineno-12-7"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="c1"># 1 ns</span>
|
||
<a href="#__codelineno-12-8" id="__codelineno-12-8" name="__codelineno-12-8"></a><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1"># 5 ns</span>
|
||
<a href="#__codelineno-12-9" id="__codelineno-12-9" name="__codelineno-12-9"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-12-10" id="__codelineno-12-10" name="__codelineno-12-10"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>根據以上方法,可以得到演算法的執行時間為 <span class="arithmatex">\((6n + 12)\)</span> ns :</p>
|
||
<div class="arithmatex">\[
|
||
1 + 1 + 10 + (1 + 5) \times n = 6n + 12
|
||
\]</div>
|
||
<p>但實際上,<strong>統計演算法的執行時間既不合理也不現實</strong>。首先,我們不希望將預估時間和執行平臺繫結,因為演算法需要在各種不同的平臺上執行。其次,我們很難獲知每種操作的執行時間,這給預估過程帶來了極大的難度。</p>
|
||
<h2 id="231">2.3.1 統計時間增長趨勢<a class="headerlink" href="#231" title="Permanent link">¶</a></h2>
|
||
<p>時間複雜度分析統計的不是演算法執行時間,<strong>而是演算法執行時間隨著資料量變大時的增長趨勢</strong>。</p>
|
||
<p>“時間增長趨勢”這個概念比較抽象,我們透過一個例子來加以理解。假設輸入資料大小為 <span class="arithmatex">\(n\)</span> ,給定三個演算法 <code>A</code>、<code>B</code> 和 <code>C</code> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="2:13"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio"/><input id="__tabbed_2_2" name="__tabbed_2" type="radio"/><input id="__tabbed_2_3" name="__tabbed_2" type="radio"/><input id="__tabbed_2_4" name="__tabbed_2" type="radio"/><input id="__tabbed_2_5" name="__tabbed_2" type="radio"/><input id="__tabbed_2_6" name="__tabbed_2" type="radio"/><input id="__tabbed_2_7" name="__tabbed_2" type="radio"/><input id="__tabbed_2_8" name="__tabbed_2" type="radio"/><input id="__tabbed_2_9" name="__tabbed_2" type="radio"/><input id="__tabbed_2_10" name="__tabbed_2" type="radio"/><input id="__tabbed_2_11" name="__tabbed_2" type="radio"/><input id="__tabbed_2_12" name="__tabbed_2" type="radio"/><input id="__tabbed_2_13" name="__tabbed_2" type="radio"/><div class="tabbed-labels"><label for="__tabbed_2_1">Python</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Java</label><label for="__tabbed_2_4">C#</label><label for="__tabbed_2_5">Go</label><label for="__tabbed_2_6">Swift</label><label for="__tabbed_2_7">JS</label><label for="__tabbed_2_8">TS</label><label for="__tabbed_2_9">Dart</label><label for="__tabbed_2_10">Rust</label><label for="__tabbed_2_11">C</label><label for="__tabbed_2_12">Kotlin</label><label for="__tabbed_2_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-13-1" id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="c1"># 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-13-2" id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-13-3" id="__codelineno-13-3" name="__codelineno-13-3"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-13-4" id="__codelineno-13-4" name="__codelineno-13-4"></a><span class="c1"># 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-13-5" id="__codelineno-13-5" name="__codelineno-13-5"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-13-6" id="__codelineno-13-6" name="__codelineno-13-6"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-13-7" id="__codelineno-13-7" name="__codelineno-13-7"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-13-8" id="__codelineno-13-8" name="__codelineno-13-8"></a><span class="c1"># 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-13-9" id="__codelineno-13-9" name="__codelineno-13-9"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-13-10" id="__codelineno-13-10" name="__codelineno-13-10"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1000000</span><span class="p">):</span>
|
||
<a href="#__codelineno-13-11" id="__codelineno-13-11" name="__codelineno-13-11"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-14-1" id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-14-2" id="__codelineno-14-2" name="__codelineno-14-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-14-3" id="__codelineno-14-3" name="__codelineno-14-3"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
|
||
<a href="#__codelineno-14-4" id="__codelineno-14-4" name="__codelineno-14-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-14-5" id="__codelineno-14-5" name="__codelineno-14-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-14-6" id="__codelineno-14-6" name="__codelineno-14-6"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-14-7" id="__codelineno-14-7" name="__codelineno-14-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-14-8" id="__codelineno-14-8" name="__codelineno-14-8"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
|
||
<a href="#__codelineno-14-9" id="__codelineno-14-9" name="__codelineno-14-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-14-10" id="__codelineno-14-10" name="__codelineno-14-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-14-11" id="__codelineno-14-11" name="__codelineno-14-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-14-12" id="__codelineno-14-12" name="__codelineno-14-12"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-14-13" id="__codelineno-14-13" name="__codelineno-14-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1000000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-14-14" id="__codelineno-14-14" name="__codelineno-14-14"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
|
||
<a href="#__codelineno-14-15" id="__codelineno-14-15" name="__codelineno-14-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-14-16" id="__codelineno-14-16" name="__codelineno-14-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-15-1" id="__codelineno-15-1" name="__codelineno-15-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-15-2" id="__codelineno-15-2" name="__codelineno-15-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-15-3" id="__codelineno-15-3" name="__codelineno-15-3"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-15-4" id="__codelineno-15-4" name="__codelineno-15-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-15-5" id="__codelineno-15-5" name="__codelineno-15-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-15-6" id="__codelineno-15-6" name="__codelineno-15-6"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-15-7" id="__codelineno-15-7" name="__codelineno-15-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-15-8" id="__codelineno-15-8" name="__codelineno-15-8"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-15-9" id="__codelineno-15-9" name="__codelineno-15-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-15-10" id="__codelineno-15-10" name="__codelineno-15-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-15-11" id="__codelineno-15-11" name="__codelineno-15-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-15-12" id="__codelineno-15-12" name="__codelineno-15-12"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-15-13" id="__codelineno-15-13" name="__codelineno-15-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1000000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-15-14" id="__codelineno-15-14" name="__codelineno-15-14"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-15-15" id="__codelineno-15-15" name="__codelineno-15-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-15-16" id="__codelineno-15-16" name="__codelineno-15-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-16-1" id="__codelineno-16-1" name="__codelineno-16-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-16-2" id="__codelineno-16-2" name="__codelineno-16-2"></a><span class="k">void</span><span class="w"> </span><span class="nf">AlgorithmA</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-16-3" id="__codelineno-16-3" name="__codelineno-16-3"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-16-4" id="__codelineno-16-4" name="__codelineno-16-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-16-5" id="__codelineno-16-5" name="__codelineno-16-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-16-6" id="__codelineno-16-6" name="__codelineno-16-6"></a><span class="k">void</span><span class="w"> </span><span class="nf">AlgorithmB</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-16-7" id="__codelineno-16-7" name="__codelineno-16-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-16-8" id="__codelineno-16-8" name="__codelineno-16-8"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-16-9" id="__codelineno-16-9" name="__codelineno-16-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-16-10" id="__codelineno-16-10" name="__codelineno-16-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-16-11" id="__codelineno-16-11" name="__codelineno-16-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-16-12" id="__codelineno-16-12" name="__codelineno-16-12"></a><span class="k">void</span><span class="w"> </span><span class="nf">AlgorithmC</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-16-13" id="__codelineno-16-13" name="__codelineno-16-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1000000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-16-14" id="__codelineno-16-14" name="__codelineno-16-14"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-16-15" id="__codelineno-16-15" name="__codelineno-16-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-16-16" id="__codelineno-16-16" name="__codelineno-16-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-17-1" id="__codelineno-17-1" name="__codelineno-17-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-17-2" id="__codelineno-17-2" name="__codelineno-17-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm_A</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-17-3" id="__codelineno-17-3" name="__codelineno-17-3"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-17-4" id="__codelineno-17-4" name="__codelineno-17-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-17-5" id="__codelineno-17-5" name="__codelineno-17-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-17-6" id="__codelineno-17-6" name="__codelineno-17-6"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm_B</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-17-7" id="__codelineno-17-7" name="__codelineno-17-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-17-8" id="__codelineno-17-8" name="__codelineno-17-8"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-17-9" id="__codelineno-17-9" name="__codelineno-17-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-17-10" id="__codelineno-17-10" name="__codelineno-17-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-17-11" id="__codelineno-17-11" name="__codelineno-17-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-17-12" id="__codelineno-17-12" name="__codelineno-17-12"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm_C</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-17-13" id="__codelineno-17-13" name="__codelineno-17-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1000000</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-17-14" id="__codelineno-17-14" name="__codelineno-17-14"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-17-15" id="__codelineno-17-15" name="__codelineno-17-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-17-16" id="__codelineno-17-16" name="__codelineno-17-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-18-1" id="__codelineno-18-1" name="__codelineno-18-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-18-2" id="__codelineno-18-2" name="__codelineno-18-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithmA</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-18-3" id="__codelineno-18-3" name="__codelineno-18-3"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-18-4" id="__codelineno-18-4" name="__codelineno-18-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-18-5" id="__codelineno-18-5" name="__codelineno-18-5"></a>
|
||
<a href="#__codelineno-18-6" id="__codelineno-18-6" name="__codelineno-18-6"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-18-7" id="__codelineno-18-7" name="__codelineno-18-7"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithmB</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-18-8" id="__codelineno-18-8" name="__codelineno-18-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-18-9" id="__codelineno-18-9" name="__codelineno-18-9"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-18-10" id="__codelineno-18-10" name="__codelineno-18-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-18-11" id="__codelineno-18-11" name="__codelineno-18-11"></a><span class="p">}</span>
|
||
<a href="#__codelineno-18-12" id="__codelineno-18-12" name="__codelineno-18-12"></a>
|
||
<a href="#__codelineno-18-13" id="__codelineno-18-13" name="__codelineno-18-13"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-18-14" id="__codelineno-18-14" name="__codelineno-18-14"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithmC</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-18-15" id="__codelineno-18-15" name="__codelineno-18-15"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="mi">1_000_000</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-18-16" id="__codelineno-18-16" name="__codelineno-18-16"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-18-17" id="__codelineno-18-17" name="__codelineno-18-17"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-18-18" id="__codelineno-18-18" name="__codelineno-18-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-19-1" id="__codelineno-19-1" name="__codelineno-19-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-19-2" id="__codelineno-19-2" name="__codelineno-19-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_A</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-19-3" id="__codelineno-19-3" name="__codelineno-19-3"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-19-4" id="__codelineno-19-4" name="__codelineno-19-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-19-5" id="__codelineno-19-5" name="__codelineno-19-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-19-6" id="__codelineno-19-6" name="__codelineno-19-6"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_B</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-19-7" id="__codelineno-19-7" name="__codelineno-19-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-19-8" id="__codelineno-19-8" name="__codelineno-19-8"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-19-9" id="__codelineno-19-9" name="__codelineno-19-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-19-10" id="__codelineno-19-10" name="__codelineno-19-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-19-11" id="__codelineno-19-11" name="__codelineno-19-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-19-12" id="__codelineno-19-12" name="__codelineno-19-12"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_C</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-19-13" id="__codelineno-19-13" name="__codelineno-19-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">1000000</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-19-14" id="__codelineno-19-14" name="__codelineno-19-14"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-19-15" id="__codelineno-19-15" name="__codelineno-19-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-19-16" id="__codelineno-19-16" name="__codelineno-19-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-20-1" id="__codelineno-20-1" name="__codelineno-20-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-20-2" id="__codelineno-20-2" name="__codelineno-20-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_A</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-20-3" id="__codelineno-20-3" name="__codelineno-20-3"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-20-4" id="__codelineno-20-4" name="__codelineno-20-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-20-5" id="__codelineno-20-5" name="__codelineno-20-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-20-6" id="__codelineno-20-6" name="__codelineno-20-6"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_B</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-20-7" id="__codelineno-20-7" name="__codelineno-20-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-20-8" id="__codelineno-20-8" name="__codelineno-20-8"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-20-9" id="__codelineno-20-9" name="__codelineno-20-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-20-10" id="__codelineno-20-10" name="__codelineno-20-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-20-11" id="__codelineno-20-11" name="__codelineno-20-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-20-12" id="__codelineno-20-12" name="__codelineno-20-12"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm_C</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-20-13" id="__codelineno-20-13" name="__codelineno-20-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">1000000</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-20-14" id="__codelineno-20-14" name="__codelineno-20-14"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-20-15" id="__codelineno-20-15" name="__codelineno-20-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-20-16" id="__codelineno-20-16" name="__codelineno-20-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-21-1" id="__codelineno-21-1" name="__codelineno-21-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-21-2" id="__codelineno-21-2" name="__codelineno-21-2"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithmA</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-21-3" id="__codelineno-21-3" name="__codelineno-21-3"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-21-4" id="__codelineno-21-4" name="__codelineno-21-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-21-5" id="__codelineno-21-5" name="__codelineno-21-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-21-6" id="__codelineno-21-6" name="__codelineno-21-6"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithmB</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-21-7" id="__codelineno-21-7" name="__codelineno-21-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-21-8" id="__codelineno-21-8" name="__codelineno-21-8"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-21-9" id="__codelineno-21-9" name="__codelineno-21-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-21-10" id="__codelineno-21-10" name="__codelineno-21-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-21-11" id="__codelineno-21-11" name="__codelineno-21-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-21-12" id="__codelineno-21-12" name="__codelineno-21-12"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithmC</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-21-13" id="__codelineno-21-13" name="__codelineno-21-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="m">1000000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-21-14" id="__codelineno-21-14" name="__codelineno-21-14"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-21-15" id="__codelineno-21-15" name="__codelineno-21-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-21-16" id="__codelineno-21-16" name="__codelineno-21-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-22-1" id="__codelineno-22-1" name="__codelineno-22-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-22-2" id="__codelineno-22-2" name="__codelineno-22-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-22-3" id="__codelineno-22-3" name="__codelineno-22-3"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-22-4" id="__codelineno-22-4" name="__codelineno-22-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-22-5" id="__codelineno-22-5" name="__codelineno-22-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-22-6" id="__codelineno-22-6" name="__codelineno-22-6"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-22-7" id="__codelineno-22-7" name="__codelineno-22-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-22-8" id="__codelineno-22-8" name="__codelineno-22-8"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-22-9" id="__codelineno-22-9" name="__codelineno-22-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-22-10" id="__codelineno-22-10" name="__codelineno-22-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-22-11" id="__codelineno-22-11" name="__codelineno-22-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-22-12" id="__codelineno-22-12" name="__codelineno-22-12"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-22-13" id="__codelineno-22-13" name="__codelineno-22-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="mi">1000000</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-22-14" id="__codelineno-22-14" name="__codelineno-22-14"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-22-15" id="__codelineno-22-15" name="__codelineno-22-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-22-16" id="__codelineno-22-16" name="__codelineno-22-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-23-1" id="__codelineno-23-1" name="__codelineno-23-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-23-2" id="__codelineno-23-2" name="__codelineno-23-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-23-3" id="__codelineno-23-3" name="__codelineno-23-3"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-23-4" id="__codelineno-23-4" name="__codelineno-23-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-23-5" id="__codelineno-23-5" name="__codelineno-23-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-23-6" id="__codelineno-23-6" name="__codelineno-23-6"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-23-7" id="__codelineno-23-7" name="__codelineno-23-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-23-8" id="__codelineno-23-8" name="__codelineno-23-8"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-23-9" id="__codelineno-23-9" name="__codelineno-23-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-23-10" id="__codelineno-23-10" name="__codelineno-23-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-23-11" id="__codelineno-23-11" name="__codelineno-23-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-23-12" id="__codelineno-23-12" name="__codelineno-23-12"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-23-13" id="__codelineno-23-13" name="__codelineno-23-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1000000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-23-14" id="__codelineno-23-14" name="__codelineno-23-14"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-23-15" id="__codelineno-23-15" name="__codelineno-23-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-23-16" id="__codelineno-23-16" name="__codelineno-23-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-24-1" id="__codelineno-24-1" name="__codelineno-24-1"></a><span class="c1">// 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-24-2" id="__codelineno-24-2" name="__codelineno-24-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algoritm_A</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-24-3" id="__codelineno-24-3" name="__codelineno-24-3"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-24-4" id="__codelineno-24-4" name="__codelineno-24-4"></a><span class="p">}</span>
|
||
<a href="#__codelineno-24-5" id="__codelineno-24-5" name="__codelineno-24-5"></a><span class="c1">// 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-24-6" id="__codelineno-24-6" name="__codelineno-24-6"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-24-7" id="__codelineno-24-7" name="__codelineno-24-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">){</span>
|
||
<a href="#__codelineno-24-8" id="__codelineno-24-8" name="__codelineno-24-8"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-24-9" id="__codelineno-24-9" name="__codelineno-24-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-24-10" id="__codelineno-24-10" name="__codelineno-24-10"></a><span class="p">}</span>
|
||
<a href="#__codelineno-24-11" id="__codelineno-24-11" name="__codelineno-24-11"></a><span class="c1">// 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-24-12" id="__codelineno-24-12" name="__codelineno-24-12"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-24-13" id="__codelineno-24-13" name="__codelineno-24-13"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="m">1000000</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-24-14" id="__codelineno-24-14" name="__codelineno-24-14"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-24-15" id="__codelineno-24-15" name="__codelineno-24-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-24-16" id="__codelineno-24-16" name="__codelineno-24-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-25-1" id="__codelineno-25-1" name="__codelineno-25-1"></a><span class="c1"># 演算法 A 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-25-2" id="__codelineno-25-2" name="__codelineno-25-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_A</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-25-3" id="__codelineno-25-3" name="__codelineno-25-3"></a><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-25-4" id="__codelineno-25-4" name="__codelineno-25-4"></a><span class="k">end</span>
|
||
<a href="#__codelineno-25-5" id="__codelineno-25-5" name="__codelineno-25-5"></a>
|
||
<a href="#__codelineno-25-6" id="__codelineno-25-6" name="__codelineno-25-6"></a><span class="c1"># 演算法 B 的時間複雜度:線性階</span>
|
||
<a href="#__codelineno-25-7" id="__codelineno-25-7" name="__codelineno-25-7"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_B</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-25-8" id="__codelineno-25-8" name="__codelineno-25-8"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-25-9" id="__codelineno-25-9" name="__codelineno-25-9"></a><span class="k">end</span>
|
||
<a href="#__codelineno-25-10" id="__codelineno-25-10" name="__codelineno-25-10"></a>
|
||
<a href="#__codelineno-25-11" id="__codelineno-25-11" name="__codelineno-25-11"></a><span class="c1"># 演算法 C 的時間複雜度:常數階</span>
|
||
<a href="#__codelineno-25-12" id="__codelineno-25-12" name="__codelineno-25-12"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm_C</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-25-13" id="__codelineno-25-13" name="__codelineno-25-13"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="mi">1_000_000</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-25-14" id="__codelineno-25-14" name="__codelineno-25-14"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>圖 2-7 展示了以上三個演算法函式的時間複雜度。</p>
|
||
<ul>
|
||
<li>演算法 <code>A</code> 只有 <span class="arithmatex">\(1\)</span> 個列印操作,演算法執行時間不隨著 <span class="arithmatex">\(n\)</span> 增大而增長。我們稱此演算法的時間複雜度為“常數階”。</li>
|
||
<li>演算法 <code>B</code> 中的列印操作需要迴圈 <span class="arithmatex">\(n\)</span> 次,演算法執行時間隨著 <span class="arithmatex">\(n\)</span> 增大呈線性增長。此演算法的時間複雜度被稱為“線性階”。</li>
|
||
<li>演算法 <code>C</code> 中的列印操作需要迴圈 <span class="arithmatex">\(1000000\)</span> 次,雖然執行時間很長,但它與輸入資料大小 <span class="arithmatex">\(n\)</span> 無關。因此 <code>C</code> 的時間複雜度和 <code>A</code> 相同,仍為“常數階”。</li>
|
||
</ul>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_simple_example.png" data-dark-src="/assets/figure-svg/figures/8d6e9031a353a2333d825d6f.json" data-src="/assets/figure-svg/figures/ddc4472549c4ae4d1666be45.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_simple_example.svg" data-theme="light" tabindex="-1" type="image/svg+xml">演算法 A、B 和 C 的時間增長趨勢</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_simple_example.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">演算法 A、B 和 C 的時間增長趨勢</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-7 演算法 A、B 和 C 的時間增長趨勢 </p>
|
||
<p>相較於直接統計演算法的執行時間,時間複雜度分析有哪些特點呢?</p>
|
||
<ul>
|
||
<li><strong>時間複雜度能夠有效評估演算法效率</strong>。例如,演算法 <code>B</code> 的執行時間呈線性增長,在 <span class="arithmatex">\(n > 1\)</span> 時比演算法 <code>A</code> 更慢,在 <span class="arithmatex">\(n > 1000000\)</span> 時比演算法 <code>C</code> 更慢。事實上,只要輸入資料大小 <span class="arithmatex">\(n\)</span> 足夠大,複雜度為“常數階”的演算法一定優於“線性階”的演算法,這正是時間增長趨勢的含義。</li>
|
||
<li><strong>時間複雜度的推算方法更簡便</strong>。顯然,執行平臺和計算操作型別都與演算法執行時間的增長趨勢無關。因此在時間複雜度分析中,我們可以簡單地將所有計算操作的執行時間視為相同的“單位時間”,從而將“計算操作執行時間統計”簡化為“計算操作數量統計”,這樣一來估算難度就大大降低了。</li>
|
||
<li><strong>時間複雜度也存在一定的侷限性</strong>。例如,儘管演算法 <code>A</code> 和 <code>C</code> 的時間複雜度相同,但實際執行時間差別很大。同樣,儘管演算法 <code>B</code> 的時間複雜度比 <code>C</code> 高,但在輸入資料大小 <span class="arithmatex">\(n\)</span> 較小時,演算法 <code>B</code> 明顯優於演算法 <code>C</code> 。對於此類情況,我們時常難以僅憑時間複雜度判斷演算法效率的高低。當然,儘管存在上述問題,複雜度分析仍然是評判演算法效率最有效且常用的方法。</li>
|
||
</ul>
|
||
<h2 id="232">2.3.2 函式漸近上界<a class="headerlink" href="#232" title="Permanent link">¶</a></h2>
|
||
<p>給定一個輸入大小為 <span class="arithmatex">\(n\)</span> 的函式:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="3:13"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio"/><input id="__tabbed_3_2" name="__tabbed_3" type="radio"/><input id="__tabbed_3_3" name="__tabbed_3" type="radio"/><input id="__tabbed_3_4" name="__tabbed_3" type="radio"/><input id="__tabbed_3_5" name="__tabbed_3" type="radio"/><input id="__tabbed_3_6" name="__tabbed_3" type="radio"/><input id="__tabbed_3_7" name="__tabbed_3" type="radio"/><input id="__tabbed_3_8" name="__tabbed_3" type="radio"/><input id="__tabbed_3_9" name="__tabbed_3" type="radio"/><input id="__tabbed_3_10" name="__tabbed_3" type="radio"/><input id="__tabbed_3_11" name="__tabbed_3" type="radio"/><input id="__tabbed_3_12" name="__tabbed_3" type="radio"/><input id="__tabbed_3_13" name="__tabbed_3" type="radio"/><div class="tabbed-labels"><label for="__tabbed_3_1">Python</label><label for="__tabbed_3_2">C++</label><label for="__tabbed_3_3">Java</label><label for="__tabbed_3_4">C#</label><label for="__tabbed_3_5">Go</label><label for="__tabbed_3_6">Swift</label><label for="__tabbed_3_7">JS</label><label for="__tabbed_3_8">TS</label><label for="__tabbed_3_9">Dart</label><label for="__tabbed_3_10">Rust</label><label for="__tabbed_3_11">C</label><label for="__tabbed_3_12">Kotlin</label><label for="__tabbed_3_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-26-1" id="__codelineno-26-1" name="__codelineno-26-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-26-2" id="__codelineno-26-2" name="__codelineno-26-2"></a> <span class="n">a</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># +1</span>
|
||
<a href="#__codelineno-26-3" id="__codelineno-26-3" name="__codelineno-26-3"></a> <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">1</span> <span class="c1"># +1</span>
|
||
<a href="#__codelineno-26-4" id="__codelineno-26-4" name="__codelineno-26-4"></a> <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">*</span> <span class="mi">2</span> <span class="c1"># +1</span>
|
||
<a href="#__codelineno-26-5" id="__codelineno-26-5" name="__codelineno-26-5"></a> <span class="c1"># 迴圈 n 次</span>
|
||
<a href="#__codelineno-26-6" id="__codelineno-26-6" name="__codelineno-26-6"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span> <span class="c1"># +1</span>
|
||
<a href="#__codelineno-26-7" id="__codelineno-26-7" name="__codelineno-26-7"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># +1</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-27-1" id="__codelineno-27-1" name="__codelineno-27-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-27-2" id="__codelineno-27-2" name="__codelineno-27-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-27-3" id="__codelineno-27-3" name="__codelineno-27-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-27-4" id="__codelineno-27-4" name="__codelineno-27-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-27-5" id="__codelineno-27-5" name="__codelineno-27-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-27-6" id="__codelineno-27-6" name="__codelineno-27-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-27-7" id="__codelineno-27-7" name="__codelineno-27-7"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-27-8" id="__codelineno-27-8" name="__codelineno-27-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-27-9" id="__codelineno-27-9" name="__codelineno-27-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-28-1" id="__codelineno-28-1" name="__codelineno-28-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-28-2" id="__codelineno-28-2" name="__codelineno-28-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-28-3" id="__codelineno-28-3" name="__codelineno-28-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-28-4" id="__codelineno-28-4" name="__codelineno-28-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-28-5" id="__codelineno-28-5" name="__codelineno-28-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-28-6" id="__codelineno-28-6" name="__codelineno-28-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-28-7" id="__codelineno-28-7" name="__codelineno-28-7"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-28-8" id="__codelineno-28-8" name="__codelineno-28-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-28-9" id="__codelineno-28-9" name="__codelineno-28-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-29-1" id="__codelineno-29-1" name="__codelineno-29-1"></a><span class="k">void</span><span class="w"> </span><span class="nf">Algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-29-2" id="__codelineno-29-2" name="__codelineno-29-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-29-3" id="__codelineno-29-3" name="__codelineno-29-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-29-4" id="__codelineno-29-4" name="__codelineno-29-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-29-5" id="__codelineno-29-5" name="__codelineno-29-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-29-6" id="__codelineno-29-6" name="__codelineno-29-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-29-7" id="__codelineno-29-7" name="__codelineno-29-7"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-29-8" id="__codelineno-29-8" name="__codelineno-29-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-29-9" id="__codelineno-29-9" name="__codelineno-29-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-30-1" id="__codelineno-30-1" name="__codelineno-30-1"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-30-2" id="__codelineno-30-2" name="__codelineno-30-2"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-30-3" id="__codelineno-30-3" name="__codelineno-30-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-30-4" id="__codelineno-30-4" name="__codelineno-30-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-30-5" id="__codelineno-30-5" name="__codelineno-30-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-30-6" id="__codelineno-30-6" name="__codelineno-30-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-30-7" id="__codelineno-30-7" name="__codelineno-30-7"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-30-8" id="__codelineno-30-8" name="__codelineno-30-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-30-9" id="__codelineno-30-9" name="__codelineno-30-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-31-1" id="__codelineno-31-1" name="__codelineno-31-1"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-31-2" id="__codelineno-31-2" name="__codelineno-31-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-31-3" id="__codelineno-31-3" name="__codelineno-31-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-31-4" id="__codelineno-31-4" name="__codelineno-31-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-31-5" id="__codelineno-31-5" name="__codelineno-31-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-31-6" id="__codelineno-31-6" name="__codelineno-31-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-31-7" id="__codelineno-31-7" name="__codelineno-31-7"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-31-8" id="__codelineno-31-8" name="__codelineno-31-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-31-9" id="__codelineno-31-9" name="__codelineno-31-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-32-1" id="__codelineno-32-1" name="__codelineno-32-1"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-32-2" id="__codelineno-32-2" name="__codelineno-32-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-32-3" id="__codelineno-32-3" name="__codelineno-32-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-32-4" id="__codelineno-32-4" name="__codelineno-32-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-32-5" id="__codelineno-32-5" name="__codelineno-32-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-32-6" id="__codelineno-32-6" name="__codelineno-32-6"></a><span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-32-7" id="__codelineno-32-7" name="__codelineno-32-7"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-32-8" id="__codelineno-32-8" name="__codelineno-32-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-32-9" id="__codelineno-32-9" name="__codelineno-32-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-33-1" id="__codelineno-33-1" name="__codelineno-33-1"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="p">{</span>
|
||
<a href="#__codelineno-33-2" id="__codelineno-33-2" name="__codelineno-33-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-33-3" id="__codelineno-33-3" name="__codelineno-33-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-33-4" id="__codelineno-33-4" name="__codelineno-33-4"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-33-5" id="__codelineno-33-5" name="__codelineno-33-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-33-6" id="__codelineno-33-6" name="__codelineno-33-6"></a><span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-33-7" id="__codelineno-33-7" name="__codelineno-33-7"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-33-8" id="__codelineno-33-8" name="__codelineno-33-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-33-9" id="__codelineno-33-9" name="__codelineno-33-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-34-1" id="__codelineno-34-1" name="__codelineno-34-1"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-34-2" id="__codelineno-34-2" name="__codelineno-34-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-34-3" id="__codelineno-34-3" name="__codelineno-34-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-34-4" id="__codelineno-34-4" name="__codelineno-34-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="m">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-34-5" id="__codelineno-34-5" name="__codelineno-34-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-34-6" id="__codelineno-34-6" name="__codelineno-34-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-34-7" id="__codelineno-34-7" name="__codelineno-34-7"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-34-8" id="__codelineno-34-8" name="__codelineno-34-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-34-9" id="__codelineno-34-9" name="__codelineno-34-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-35-1" id="__codelineno-35-1" name="__codelineno-35-1"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-35-2" id="__codelineno-35-2" name="__codelineno-35-2"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-35-3" id="__codelineno-35-3" name="__codelineno-35-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-35-4" id="__codelineno-35-4" name="__codelineno-35-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-35-5" id="__codelineno-35-5" name="__codelineno-35-5"></a>
|
||
<a href="#__codelineno-35-6" id="__codelineno-35-6" name="__codelineno-35-6"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-35-7" id="__codelineno-35-7" name="__codelineno-35-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-35-8" id="__codelineno-35-8" name="__codelineno-35-8"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-35-9" id="__codelineno-35-9" name="__codelineno-35-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-35-10" id="__codelineno-35-10" name="__codelineno-35-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-36-1" id="__codelineno-36-1" name="__codelineno-36-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-36-2" id="__codelineno-36-2" name="__codelineno-36-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-36-3" id="__codelineno-36-3" name="__codelineno-36-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-36-4" id="__codelineno-36-4" name="__codelineno-36-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-36-5" id="__codelineno-36-5" name="__codelineno-36-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-36-6" id="__codelineno-36-6" name="__codelineno-36-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-36-7" id="__codelineno-36-7" name="__codelineno-36-7"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-36-8" id="__codelineno-36-8" name="__codelineno-36-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-36-9" id="__codelineno-36-9" name="__codelineno-36-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-37-1" id="__codelineno-37-1" name="__codelineno-37-1"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-37-2" id="__codelineno-37-2" name="__codelineno-37-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-37-3" id="__codelineno-37-3" name="__codelineno-37-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-37-4" id="__codelineno-37-4" name="__codelineno-37-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-37-5" id="__codelineno-37-5" name="__codelineno-37-5"></a><span class="w"> </span><span class="c1">// 迴圈 n 次</span>
|
||
<a href="#__codelineno-37-6" id="__codelineno-37-6" name="__codelineno-37-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// +1(每輪都執行 i ++)</span>
|
||
<a href="#__codelineno-37-7" id="__codelineno-37-7" name="__codelineno-37-7"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span><span class="w"> </span><span class="c1">// +1</span>
|
||
<a href="#__codelineno-37-8" id="__codelineno-37-8" name="__codelineno-37-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-37-9" id="__codelineno-37-9" name="__codelineno-37-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-38-1" id="__codelineno-38-1" name="__codelineno-38-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-38-2" id="__codelineno-38-2" name="__codelineno-38-2"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1"># +1</span>
|
||
<a href="#__codelineno-38-3" id="__codelineno-38-3" name="__codelineno-38-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1"># +1</span>
|
||
<a href="#__codelineno-38-4" id="__codelineno-38-4" name="__codelineno-38-4"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="c1"># +1</span>
|
||
<a href="#__codelineno-38-5" id="__codelineno-38-5" name="__codelineno-38-5"></a><span class="w"> </span><span class="c1"># 迴圈 n 次</span>
|
||
<a href="#__codelineno-38-6" id="__codelineno-38-6" name="__codelineno-38-6"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="c1"># +1</span>
|
||
<a href="#__codelineno-38-7" id="__codelineno-38-7" name="__codelineno-38-7"></a><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1"># +1</span>
|
||
<a href="#__codelineno-38-8" id="__codelineno-38-8" name="__codelineno-38-8"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-38-9" id="__codelineno-38-9" name="__codelineno-38-9"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>設演算法的操作數量是一個關於輸入資料大小 <span class="arithmatex">\(n\)</span> 的函式,記為 <span class="arithmatex">\(T(n)\)</span> ,則以上函式的操作數量為:</p>
|
||
<div class="arithmatex">\[
|
||
T(n) = 3 + 2n
|
||
\]</div>
|
||
<p><span class="arithmatex">\(T(n)\)</span> 是一次函式,說明其執行時間的增長趨勢是線性的,因此它的時間複雜度是線性階。</p>
|
||
<p>我們將線性階的時間複雜度記為 <span class="arithmatex">\(O(n)\)</span> ,這個數學符號稱為<u>大 <span class="arithmatex">\(O\)</span> 記號(big-<span class="arithmatex">\(O\)</span> notation)</u>,表示函式 <span class="arithmatex">\(T(n)\)</span> 的<u>漸近上界(asymptotic upper bound)</u>。</p>
|
||
<p>時間複雜度分析本質上是計算“操作數量 <span class="arithmatex">\(T(n)\)</span>”的漸近上界,它具有明確的數學定義。</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">函式漸近上界</p>
|
||
<p>若存在正實數 <span class="arithmatex">\(c\)</span> 和實數 <span class="arithmatex">\(n_0\)</span> ,使得對於所有的 <span class="arithmatex">\(n > n_0\)</span> ,均有 <span class="arithmatex">\(T(n) \leq c \cdot f(n)\)</span> ,則可認為 <span class="arithmatex">\(f(n)\)</span> 給出了 <span class="arithmatex">\(T(n)\)</span> 的一個漸近上界,記為 <span class="arithmatex">\(T(n) = O(f(n))\)</span> 。</p>
|
||
</div>
|
||
<p>如圖 2-8 所示,計算漸近上界就是尋找一個函式 <span class="arithmatex">\(f(n)\)</span> ,使得當 <span class="arithmatex">\(n\)</span> 趨向於無窮大時,<span class="arithmatex">\(T(n)\)</span> 和 <span class="arithmatex">\(f(n)\)</span> 處於相同的增長級別,僅相差一個常數係數 <span class="arithmatex">\(c\)</span>。</p>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/asymptotic_upper_bound.png" data-dark-src="/assets/figure-svg/figures/4f4b13bdada64cbfca0f1cbc.json" data-src="/assets/figure-svg/figures/20d71b1bbc6ab740d521a019.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/asymptotic_upper_bound.svg" data-theme="light" tabindex="-1" type="image/svg+xml">函式的漸近上界</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/asymptotic_upper_bound.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">函式的漸近上界</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-8 函式的漸近上界 </p>
|
||
<h2 id="233">2.3.3 推算方法<a class="headerlink" href="#233" title="Permanent link">¶</a></h2>
|
||
<p>漸近上界的數學味兒有點重,如果你感覺沒有完全理解,也無須擔心。我們可以先掌握推算方法,在不斷的實踐中,就可以逐漸領悟其數學意義。</p>
|
||
<p>根據定義,確定 <span class="arithmatex">\(f(n)\)</span> 之後,我們便可得到時間複雜度 <span class="arithmatex">\(O(f(n))\)</span> 。那麼如何確定漸近上界 <span class="arithmatex">\(f(n)\)</span> 呢?總體分為兩步:首先統計操作數量,然後判斷漸近上界。</p>
|
||
<h3 id="1">1. 第一步:統計操作數量<a class="headerlink" href="#1" title="Permanent link">¶</a></h3>
|
||
<p>針對程式碼,逐行從上到下計算即可。然而,由於上述 <span class="arithmatex">\(c \cdot f(n)\)</span> 中的常數係數 <span class="arithmatex">\(c\)</span> 可以取任意大小,<strong>因此操作數量 <span class="arithmatex">\(T(n)\)</span> 中的各種係數、常數項都可以忽略</strong>。根據此原則,可以總結出以下計數簡化技巧。</p>
|
||
<ol>
|
||
<li><strong>忽略 <span class="arithmatex">\(T(n)\)</span> 中的常數</strong>。因為它們都與 <span class="arithmatex">\(n\)</span> 無關,所以對時間複雜度不產生影響。</li>
|
||
<li><strong>省略所有係數</strong>。例如,迴圈 <span class="arithmatex">\(2n\)</span> 次、<span class="arithmatex">\(5n + 1\)</span> 次等,都可以簡化記為 <span class="arithmatex">\(n\)</span> 次,因為 <span class="arithmatex">\(n\)</span> 前面的係數對時間複雜度沒有影響。</li>
|
||
<li><strong>迴圈巢狀時使用乘法</strong>。總操作數量等於外層迴圈和內層迴圈操作數量之積,每一層迴圈依然可以分別套用第 <code>1.</code> 點和第 <code>2.</code> 點的技巧。</li>
|
||
</ol>
|
||
<p>給定一個函式,我們可以用上述技巧來統計操作數量:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="4:13"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio"/><input id="__tabbed_4_2" name="__tabbed_4" type="radio"/><input id="__tabbed_4_3" name="__tabbed_4" type="radio"/><input id="__tabbed_4_4" name="__tabbed_4" type="radio"/><input id="__tabbed_4_5" name="__tabbed_4" type="radio"/><input id="__tabbed_4_6" name="__tabbed_4" type="radio"/><input id="__tabbed_4_7" name="__tabbed_4" type="radio"/><input id="__tabbed_4_8" name="__tabbed_4" type="radio"/><input id="__tabbed_4_9" name="__tabbed_4" type="radio"/><input id="__tabbed_4_10" name="__tabbed_4" type="radio"/><input id="__tabbed_4_11" name="__tabbed_4" type="radio"/><input id="__tabbed_4_12" name="__tabbed_4" type="radio"/><input id="__tabbed_4_13" name="__tabbed_4" type="radio"/><div class="tabbed-labels"><label for="__tabbed_4_1">Python</label><label for="__tabbed_4_2">C++</label><label for="__tabbed_4_3">Java</label><label for="__tabbed_4_4">C#</label><label for="__tabbed_4_5">Go</label><label for="__tabbed_4_6">Swift</label><label for="__tabbed_4_7">JS</label><label for="__tabbed_4_8">TS</label><label for="__tabbed_4_9">Dart</label><label for="__tabbed_4_10">Rust</label><label for="__tabbed_4_11">C</label><label for="__tabbed_4_12">Kotlin</label><label for="__tabbed_4_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-39-1" id="__codelineno-39-1" name="__codelineno-39-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||
<a href="#__codelineno-39-2" id="__codelineno-39-2" name="__codelineno-39-2"></a> <span class="n">a</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># +0(技巧 1)</span>
|
||
<a href="#__codelineno-39-3" id="__codelineno-39-3" name="__codelineno-39-3"></a> <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">n</span> <span class="c1"># +0(技巧 1)</span>
|
||
<a href="#__codelineno-39-4" id="__codelineno-39-4" name="__codelineno-39-4"></a> <span class="c1"># +n(技巧 2)</span>
|
||
<a href="#__codelineno-39-5" id="__codelineno-39-5" name="__codelineno-39-5"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
|
||
<a href="#__codelineno-39-6" id="__codelineno-39-6" name="__codelineno-39-6"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-39-7" id="__codelineno-39-7" name="__codelineno-39-7"></a> <span class="c1"># +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-39-8" id="__codelineno-39-8" name="__codelineno-39-8"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-39-9" id="__codelineno-39-9" name="__codelineno-39-9"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
|
||
<a href="#__codelineno-39-10" id="__codelineno-39-10" name="__codelineno-39-10"></a> <span class="nb">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-40-1" id="__codelineno-40-1" name="__codelineno-40-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-40-2" id="__codelineno-40-2" name="__codelineno-40-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-40-3" id="__codelineno-40-3" name="__codelineno-40-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-40-4" id="__codelineno-40-4" name="__codelineno-40-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-40-5" id="__codelineno-40-5" name="__codelineno-40-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-40-6" id="__codelineno-40-6" name="__codelineno-40-6"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
|
||
<a href="#__codelineno-40-7" id="__codelineno-40-7" name="__codelineno-40-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-40-8" id="__codelineno-40-8" name="__codelineno-40-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-40-9" id="__codelineno-40-9" name="__codelineno-40-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-40-10" id="__codelineno-40-10" name="__codelineno-40-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-40-11" id="__codelineno-40-11" name="__codelineno-40-11"></a><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
|
||
<a href="#__codelineno-40-12" id="__codelineno-40-12" name="__codelineno-40-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-40-13" id="__codelineno-40-13" name="__codelineno-40-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-40-14" id="__codelineno-40-14" name="__codelineno-40-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-41-1" id="__codelineno-41-1" name="__codelineno-41-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-41-2" id="__codelineno-41-2" name="__codelineno-41-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-41-3" id="__codelineno-41-3" name="__codelineno-41-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-41-4" id="__codelineno-41-4" name="__codelineno-41-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-41-5" id="__codelineno-41-5" name="__codelineno-41-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-41-6" id="__codelineno-41-6" name="__codelineno-41-6"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-41-7" id="__codelineno-41-7" name="__codelineno-41-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-41-8" id="__codelineno-41-8" name="__codelineno-41-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-41-9" id="__codelineno-41-9" name="__codelineno-41-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-41-10" id="__codelineno-41-10" name="__codelineno-41-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-41-11" id="__codelineno-41-11" name="__codelineno-41-11"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-41-12" id="__codelineno-41-12" name="__codelineno-41-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-41-13" id="__codelineno-41-13" name="__codelineno-41-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-41-14" id="__codelineno-41-14" name="__codelineno-41-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-42-1" id="__codelineno-42-1" name="__codelineno-42-1"></a><span class="k">void</span><span class="w"> </span><span class="nf">Algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-42-2" id="__codelineno-42-2" name="__codelineno-42-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-42-3" id="__codelineno-42-3" name="__codelineno-42-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-42-4" id="__codelineno-42-4" name="__codelineno-42-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-42-5" id="__codelineno-42-5" name="__codelineno-42-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-42-6" id="__codelineno-42-6" name="__codelineno-42-6"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-42-7" id="__codelineno-42-7" name="__codelineno-42-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-42-8" id="__codelineno-42-8" name="__codelineno-42-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-42-9" id="__codelineno-42-9" name="__codelineno-42-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-42-10" id="__codelineno-42-10" name="__codelineno-42-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-42-11" id="__codelineno-42-11" name="__codelineno-42-11"></a><span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-42-12" id="__codelineno-42-12" name="__codelineno-42-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-42-13" id="__codelineno-42-13" name="__codelineno-42-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-42-14" id="__codelineno-42-14" name="__codelineno-42-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-43-1" id="__codelineno-43-1" name="__codelineno-43-1"></a><span class="kd">func</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-43-2" id="__codelineno-43-2" name="__codelineno-43-2"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-43-3" id="__codelineno-43-3" name="__codelineno-43-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-43-4" id="__codelineno-43-4" name="__codelineno-43-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-43-5" id="__codelineno-43-5" name="__codelineno-43-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-43-6" id="__codelineno-43-6" name="__codelineno-43-6"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-43-7" id="__codelineno-43-7" name="__codelineno-43-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-43-8" id="__codelineno-43-8" name="__codelineno-43-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-43-9" id="__codelineno-43-9" name="__codelineno-43-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-43-10" id="__codelineno-43-10" name="__codelineno-43-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-43-11" id="__codelineno-43-11" name="__codelineno-43-11"></a><span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-43-12" id="__codelineno-43-12" name="__codelineno-43-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-43-13" id="__codelineno-43-13" name="__codelineno-43-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-43-14" id="__codelineno-43-14" name="__codelineno-43-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-44-1" id="__codelineno-44-1" name="__codelineno-44-1"></a><span class="kd">func</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-44-2" id="__codelineno-44-2" name="__codelineno-44-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-44-3" id="__codelineno-44-3" name="__codelineno-44-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-44-4" id="__codelineno-44-4" name="__codelineno-44-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-44-5" id="__codelineno-44-5" name="__codelineno-44-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="p">(</span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-44-6" id="__codelineno-44-6" name="__codelineno-44-6"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-44-7" id="__codelineno-44-7" name="__codelineno-44-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-44-8" id="__codelineno-44-8" name="__codelineno-44-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-44-9" id="__codelineno-44-9" name="__codelineno-44-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-44-10" id="__codelineno-44-10" name="__codelineno-44-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-44-11" id="__codelineno-44-11" name="__codelineno-44-11"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-44-12" id="__codelineno-44-12" name="__codelineno-44-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-44-13" id="__codelineno-44-13" name="__codelineno-44-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-44-14" id="__codelineno-44-14" name="__codelineno-44-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-45-1" id="__codelineno-45-1" name="__codelineno-45-1"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-45-2" id="__codelineno-45-2" name="__codelineno-45-2"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-45-3" id="__codelineno-45-3" name="__codelineno-45-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-45-4" id="__codelineno-45-4" name="__codelineno-45-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-45-5" id="__codelineno-45-5" name="__codelineno-45-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-45-6" id="__codelineno-45-6" name="__codelineno-45-6"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-45-7" id="__codelineno-45-7" name="__codelineno-45-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-45-8" id="__codelineno-45-8" name="__codelineno-45-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-45-9" id="__codelineno-45-9" name="__codelineno-45-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-45-10" id="__codelineno-45-10" name="__codelineno-45-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-45-11" id="__codelineno-45-11" name="__codelineno-45-11"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-45-12" id="__codelineno-45-12" name="__codelineno-45-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-45-13" id="__codelineno-45-13" name="__codelineno-45-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-45-14" id="__codelineno-45-14" name="__codelineno-45-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-46-1" id="__codelineno-46-1" name="__codelineno-46-1"></a><span class="kd">function</span><span class="w"> </span><span class="nx">algorithm</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-46-2" id="__codelineno-46-2" name="__codelineno-46-2"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-46-3" id="__codelineno-46-3" name="__codelineno-46-3"></a><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-46-4" id="__codelineno-46-4" name="__codelineno-46-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-46-5" id="__codelineno-46-5" name="__codelineno-46-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-46-6" id="__codelineno-46-6" name="__codelineno-46-6"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-46-7" id="__codelineno-46-7" name="__codelineno-46-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-46-8" id="__codelineno-46-8" name="__codelineno-46-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-46-9" id="__codelineno-46-9" name="__codelineno-46-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-46-10" id="__codelineno-46-10" name="__codelineno-46-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-46-11" id="__codelineno-46-11" name="__codelineno-46-11"></a><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-46-12" id="__codelineno-46-12" name="__codelineno-46-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-46-13" id="__codelineno-46-13" name="__codelineno-46-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-46-14" id="__codelineno-46-14" name="__codelineno-46-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-47-1" id="__codelineno-47-1" name="__codelineno-47-1"></a><span class="kt">void</span><span class="w"> </span><span class="n">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-47-2" id="__codelineno-47-2" name="__codelineno-47-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-47-3" id="__codelineno-47-3" name="__codelineno-47-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-47-4" id="__codelineno-47-4" name="__codelineno-47-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-47-5" id="__codelineno-47-5" name="__codelineno-47-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="m">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-47-6" id="__codelineno-47-6" name="__codelineno-47-6"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-47-7" id="__codelineno-47-7" name="__codelineno-47-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-47-8" id="__codelineno-47-8" name="__codelineno-47-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-47-9" id="__codelineno-47-9" name="__codelineno-47-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-47-10" id="__codelineno-47-10" name="__codelineno-47-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-47-11" id="__codelineno-47-11" name="__codelineno-47-11"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-47-12" id="__codelineno-47-12" name="__codelineno-47-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-47-13" id="__codelineno-47-13" name="__codelineno-47-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-47-14" id="__codelineno-47-14" name="__codelineno-47-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-48-1" id="__codelineno-48-1" name="__codelineno-48-1"></a><span class="k">fn</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-48-2" id="__codelineno-48-2" name="__codelineno-48-2"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-48-3" id="__codelineno-48-3" name="__codelineno-48-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-48-4" id="__codelineno-48-4" name="__codelineno-48-4"></a>
|
||
<a href="#__codelineno-48-5" id="__codelineno-48-5" name="__codelineno-48-5"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-48-6" id="__codelineno-48-6" name="__codelineno-48-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="p">(</span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-48-7" id="__codelineno-48-7" name="__codelineno-48-7"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-48-8" id="__codelineno-48-8" name="__codelineno-48-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-48-9" id="__codelineno-48-9" name="__codelineno-48-9"></a>
|
||
<a href="#__codelineno-48-10" id="__codelineno-48-10" name="__codelineno-48-10"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-48-11" id="__codelineno-48-11" name="__codelineno-48-11"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-48-12" id="__codelineno-48-12" name="__codelineno-48-12"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-48-13" id="__codelineno-48-13" name="__codelineno-48-13"></a><span class="w"> </span><span class="fm">println!</span><span class="p">(</span><span class="s">"{}"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-48-14" id="__codelineno-48-14" name="__codelineno-48-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-48-15" id="__codelineno-48-15" name="__codelineno-48-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-48-16" id="__codelineno-48-16" name="__codelineno-48-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-49-1" id="__codelineno-49-1" name="__codelineno-49-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-49-2" id="__codelineno-49-2" name="__codelineno-49-2"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-49-3" id="__codelineno-49-3" name="__codelineno-49-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-49-4" id="__codelineno-49-4" name="__codelineno-49-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-49-5" id="__codelineno-49-5" name="__codelineno-49-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-49-6" id="__codelineno-49-6" name="__codelineno-49-6"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-49-7" id="__codelineno-49-7" name="__codelineno-49-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-49-8" id="__codelineno-49-8" name="__codelineno-49-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-49-9" id="__codelineno-49-9" name="__codelineno-49-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-49-10" id="__codelineno-49-10" name="__codelineno-49-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-49-11" id="__codelineno-49-11" name="__codelineno-49-11"></a><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-49-12" id="__codelineno-49-12" name="__codelineno-49-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-49-13" id="__codelineno-49-13" name="__codelineno-49-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-49-14" id="__codelineno-49-14" name="__codelineno-49-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-50-1" id="__codelineno-50-1" name="__codelineno-50-1"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-50-2" id="__codelineno-50-2" name="__codelineno-50-2"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-50-3" id="__codelineno-50-3" name="__codelineno-50-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="c1">// +0(技巧 1)</span>
|
||
<a href="#__codelineno-50-4" id="__codelineno-50-4" name="__codelineno-50-4"></a><span class="w"> </span><span class="c1">// +n(技巧 2)</span>
|
||
<a href="#__codelineno-50-5" id="__codelineno-50-5" name="__codelineno-50-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="m">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-50-6" id="__codelineno-50-6" name="__codelineno-50-6"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-50-7" id="__codelineno-50-7" name="__codelineno-50-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-50-8" id="__codelineno-50-8" name="__codelineno-50-8"></a><span class="w"> </span><span class="c1">// +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-50-9" id="__codelineno-50-9" name="__codelineno-50-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="m">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-50-10" id="__codelineno-50-10" name="__codelineno-50-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-50-11" id="__codelineno-50-11" name="__codelineno-50-11"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-50-12" id="__codelineno-50-12" name="__codelineno-50-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-50-13" id="__codelineno-50-13" name="__codelineno-50-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-50-14" id="__codelineno-50-14" name="__codelineno-50-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><pre><span></span><code><a href="#__codelineno-51-1" id="__codelineno-51-1" name="__codelineno-51-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">algorithm</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-51-2" id="__codelineno-51-2" name="__codelineno-51-2"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1"># +0(技巧 1)</span>
|
||
<a href="#__codelineno-51-3" id="__codelineno-51-3" name="__codelineno-51-3"></a><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="c1"># +0(技巧 1)</span>
|
||
<a href="#__codelineno-51-4" id="__codelineno-51-4" name="__codelineno-51-4"></a><span class="w"> </span><span class="c1"># +n(技巧 2)</span>
|
||
<a href="#__codelineno-51-5" id="__codelineno-51-5" name="__codelineno-51-5"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="p">(</span><span class="mi">5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-51-6" id="__codelineno-51-6" name="__codelineno-51-6"></a><span class="w"> </span><span class="c1"># +n*n(技巧 3)</span>
|
||
<a href="#__codelineno-51-7" id="__codelineno-51-7" name="__codelineno-51-7"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="p">))</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span>
|
||
<a href="#__codelineno-51-8" id="__codelineno-51-8" name="__codelineno-51-8"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-51-9" id="__codelineno-51-9" name="__codelineno-51-9"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-51-10" id="__codelineno-51-10" name="__codelineno-51-10"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>以下公式展示了使用上述技巧前後的統計結果,兩者推算出的時間複雜度都為 <span class="arithmatex">\(O(n^2)\)</span> 。</p>
|
||
<div class="arithmatex">\[
|
||
\begin{aligned}
|
||
T(n) & = 2n(n + 1) + (5n + 1) + 2 & \text{完整統計 (-.-|||)} \newline
|
||
& = 2n^2 + 7n + 3 \newline
|
||
T(n) & = n^2 + n & \text{偷懶統計 (o.O)}
|
||
\end{aligned}
|
||
\]</div>
|
||
<h3 id="2">2. 第二步:判斷漸近上界<a class="headerlink" href="#2" title="Permanent link">¶</a></h3>
|
||
<p><strong>時間複雜度由 <span class="arithmatex">\(T(n)\)</span> 中最高階的項來決定</strong>。這是因為在 <span class="arithmatex">\(n\)</span> 趨於無窮大時,最高階的項將發揮主導作用,其他項的影響都可以忽略。</p>
|
||
<p>表 2-2 展示了一些例子,其中一些誇張的值是為了強調“係數無法撼動階數”這一結論。當 <span class="arithmatex">\(n\)</span> 趨於無窮大時,這些常數變得無足輕重。</p>
|
||
<p align="center"> 表 2-2 不同操作數量對應的時間複雜度 </p>
|
||
<div class="center-table">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>操作數量 <span class="arithmatex">\(T(n)\)</span></th>
|
||
<th>時間複雜度 <span class="arithmatex">\(O(f(n))\)</span></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><span class="arithmatex">\(100000\)</span></td>
|
||
<td><span class="arithmatex">\(O(1)\)</span></td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="arithmatex">\(3n + 2\)</span></td>
|
||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="arithmatex">\(2n^2 + 3n + 2\)</span></td>
|
||
<td><span class="arithmatex">\(O(n^2)\)</span></td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="arithmatex">\(n^3 + 10000n^2\)</span></td>
|
||
<td><span class="arithmatex">\(O(n^3)\)</span></td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="arithmatex">\(2^n + 10000n^{10000}\)</span></td>
|
||
<td><span class="arithmatex">\(O(2^n)\)</span></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<h2 id="234">2.3.4 常見型別<a class="headerlink" href="#234" title="Permanent link">¶</a></h2>
|
||
<p>設輸入資料大小為 <span class="arithmatex">\(n\)</span> ,常見的時間複雜度型別如圖 2-9 所示(按照從低到高的順序排列)。</p>
|
||
<div class="arithmatex">\[
|
||
\begin{aligned}
|
||
& O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!) \newline
|
||
& \text{常數階} < \text{對數階} < \text{線性階} < \text{線性對數階} < \text{平方階} < \text{指數階} < \text{階乘階}
|
||
\end{aligned}
|
||
\]</div>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_common_types.png" data-dark-src="/assets/figure-svg/figures/f27a2d579298829483c084b1.json" data-src="/assets/figure-svg/figures/13a1deb1d88eb4581b836d69.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_common_types.svg" data-theme="light" tabindex="-1" type="image/svg+xml">常見的時間複雜度型別</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_common_types.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">常見的時間複雜度型別</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-9 常見的時間複雜度型別 </p>
|
||
<h3 id="1-o1">1. 常數階 <span class="arithmatex">\(O(1)\)</span><a class="headerlink" href="#1-o1" title="Permanent link">¶</a></h3>
|
||
<p>常數階的操作數量與輸入資料大小 <span class="arithmatex">\(n\)</span> 無關,即不隨著 <span class="arithmatex">\(n\)</span> 的變化而變化。</p>
|
||
<p>在以下函式中,儘管操作數量 <code>size</code> 可能很大,但由於其與輸入資料大小 <span class="arithmatex">\(n\)</span> 無關,因此時間複雜度仍為 <span class="arithmatex">\(O(1)\)</span> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="5:13"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio"/><input id="__tabbed_5_2" name="__tabbed_5" type="radio"/><input id="__tabbed_5_3" name="__tabbed_5" type="radio"/><input id="__tabbed_5_4" name="__tabbed_5" type="radio"/><input id="__tabbed_5_5" name="__tabbed_5" type="radio"/><input id="__tabbed_5_6" name="__tabbed_5" type="radio"/><input id="__tabbed_5_7" name="__tabbed_5" type="radio"/><input id="__tabbed_5_8" name="__tabbed_5" type="radio"/><input id="__tabbed_5_9" name="__tabbed_5" type="radio"/><input id="__tabbed_5_10" name="__tabbed_5" type="radio"/><input id="__tabbed_5_11" name="__tabbed_5" type="radio"/><input id="__tabbed_5_12" name="__tabbed_5" type="radio"/><input id="__tabbed_5_13" name="__tabbed_5" type="radio"/><div class="tabbed-labels"><label for="__tabbed_5_1">Python</label><label for="__tabbed_5_2">C++</label><label for="__tabbed_5_3">Java</label><label for="__tabbed_5_4">C#</label><label for="__tabbed_5_5">Go</label><label for="__tabbed_5_6">Swift</label><label for="__tabbed_5_7">JS</label><label for="__tabbed_5_8">TS</label><label for="__tabbed_5_9">Dart</label><label for="__tabbed_5_10">Rust</label><label for="__tabbed_5_11">C</label><label for="__tabbed_5_12">Kotlin</label><label for="__tabbed_5_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-52-1" id="__codelineno-52-1" name="__codelineno-52-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-52-2" id="__codelineno-52-2" name="__codelineno-52-2"></a><span class="w"> </span><span class="sd">"""常數階"""</span>
|
||
<a href="#__codelineno-52-3" id="__codelineno-52-3" name="__codelineno-52-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-52-4" id="__codelineno-52-4" name="__codelineno-52-4"></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">100000</span>
|
||
<a href="#__codelineno-52-5" id="__codelineno-52-5" name="__codelineno-52-5"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">size</span><span class="p">):</span>
|
||
<a href="#__codelineno-52-6" id="__codelineno-52-6" name="__codelineno-52-6"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-52-7" id="__codelineno-52-7" name="__codelineno-52-7"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-53-1" id="__codelineno-53-1" name="__codelineno-53-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-53-2" id="__codelineno-53-2" name="__codelineno-53-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-53-3" id="__codelineno-53-3" name="__codelineno-53-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-53-4" id="__codelineno-53-4" name="__codelineno-53-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-53-5" id="__codelineno-53-5" name="__codelineno-53-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-53-6" id="__codelineno-53-6" name="__codelineno-53-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-53-7" id="__codelineno-53-7" name="__codelineno-53-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-53-8" id="__codelineno-53-8" name="__codelineno-53-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-54-1" id="__codelineno-54-1" name="__codelineno-54-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-54-2" id="__codelineno-54-2" name="__codelineno-54-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-54-3" id="__codelineno-54-3" name="__codelineno-54-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-54-4" id="__codelineno-54-4" name="__codelineno-54-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-54-5" id="__codelineno-54-5" name="__codelineno-54-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-54-6" id="__codelineno-54-6" name="__codelineno-54-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-54-7" id="__codelineno-54-7" name="__codelineno-54-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-54-8" id="__codelineno-54-8" name="__codelineno-54-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-55-1" id="__codelineno-55-1" name="__codelineno-55-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-55-2" id="__codelineno-55-2" name="__codelineno-55-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">Constant</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-55-3" id="__codelineno-55-3" name="__codelineno-55-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-55-4" id="__codelineno-55-4" name="__codelineno-55-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-55-5" id="__codelineno-55-5" name="__codelineno-55-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-55-6" id="__codelineno-55-6" name="__codelineno-55-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-55-7" id="__codelineno-55-7" name="__codelineno-55-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-55-8" id="__codelineno-55-8" name="__codelineno-55-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-56-1" id="__codelineno-56-1" name="__codelineno-56-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-56-2" id="__codelineno-56-2" name="__codelineno-56-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">constant</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-56-3" id="__codelineno-56-3" name="__codelineno-56-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-56-4" id="__codelineno-56-4" name="__codelineno-56-4"></a><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">100000</span>
|
||
<a href="#__codelineno-56-5" id="__codelineno-56-5" name="__codelineno-56-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-56-6" id="__codelineno-56-6" name="__codelineno-56-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-56-7" id="__codelineno-56-7" name="__codelineno-56-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-56-8" id="__codelineno-56-8" name="__codelineno-56-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-56-9" id="__codelineno-56-9" name="__codelineno-56-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-57-1" id="__codelineno-57-1" name="__codelineno-57-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-57-2" id="__codelineno-57-2" name="__codelineno-57-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-57-3" id="__codelineno-57-3" name="__codelineno-57-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-57-4" id="__codelineno-57-4" name="__codelineno-57-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">size</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">100_000</span>
|
||
<a href="#__codelineno-57-5" id="__codelineno-57-5" name="__codelineno-57-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-57-6" id="__codelineno-57-6" name="__codelineno-57-6"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-57-7" id="__codelineno-57-7" name="__codelineno-57-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-57-8" id="__codelineno-57-8" name="__codelineno-57-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-57-9" id="__codelineno-57-9" name="__codelineno-57-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-58-1" id="__codelineno-58-1" name="__codelineno-58-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-58-2" id="__codelineno-58-2" name="__codelineno-58-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">constant</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-58-3" id="__codelineno-58-3" name="__codelineno-58-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-58-4" id="__codelineno-58-4" name="__codelineno-58-4"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-58-5" id="__codelineno-58-5" name="__codelineno-58-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-58-6" id="__codelineno-58-6" name="__codelineno-58-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-58-7" id="__codelineno-58-7" name="__codelineno-58-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-59-1" id="__codelineno-59-1" name="__codelineno-59-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-59-2" id="__codelineno-59-2" name="__codelineno-59-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">constant</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-59-3" id="__codelineno-59-3" name="__codelineno-59-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-59-4" id="__codelineno-59-4" name="__codelineno-59-4"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-59-5" id="__codelineno-59-5" name="__codelineno-59-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-59-6" id="__codelineno-59-6" name="__codelineno-59-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-59-7" id="__codelineno-59-7" name="__codelineno-59-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-60-1" id="__codelineno-60-1" name="__codelineno-60-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-60-2" id="__codelineno-60-2" name="__codelineno-60-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">constant</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-60-3" id="__codelineno-60-3" name="__codelineno-60-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-60-4" id="__codelineno-60-4" name="__codelineno-60-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-60-5" id="__codelineno-60-5" name="__codelineno-60-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-60-6" id="__codelineno-60-6" name="__codelineno-60-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-60-7" id="__codelineno-60-7" name="__codelineno-60-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-60-8" id="__codelineno-60-8" name="__codelineno-60-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-60-9" id="__codelineno-60-9" name="__codelineno-60-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-61-1" id="__codelineno-61-1" name="__codelineno-61-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-61-2" id="__codelineno-61-2" name="__codelineno-61-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-61-3" id="__codelineno-61-3" name="__codelineno-61-3"></a><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="p">;</span>
|
||
<a href="#__codelineno-61-4" id="__codelineno-61-4" name="__codelineno-61-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-61-5" id="__codelineno-61-5" name="__codelineno-61-5"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100_000</span><span class="p">;</span>
|
||
<a href="#__codelineno-61-6" id="__codelineno-61-6" name="__codelineno-61-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">size</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-61-7" id="__codelineno-61-7" name="__codelineno-61-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-61-8" id="__codelineno-61-8" name="__codelineno-61-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-61-9" id="__codelineno-61-9" name="__codelineno-61-9"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-61-10" id="__codelineno-61-10" name="__codelineno-61-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-62-1" id="__codelineno-62-1" name="__codelineno-62-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-62-2" id="__codelineno-62-2" name="__codelineno-62-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-62-3" id="__codelineno-62-3" name="__codelineno-62-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-62-4" id="__codelineno-62-4" name="__codelineno-62-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100000</span><span class="p">;</span>
|
||
<a href="#__codelineno-62-5" id="__codelineno-62-5" name="__codelineno-62-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-62-6" id="__codelineno-62-6" name="__codelineno-62-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-62-7" id="__codelineno-62-7" name="__codelineno-62-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-62-8" id="__codelineno-62-8" name="__codelineno-62-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-62-9" id="__codelineno-62-9" name="__codelineno-62-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-63-1" id="__codelineno-63-1" name="__codelineno-63-1"></a><span class="cm">/* 常數階 */</span>
|
||
<a href="#__codelineno-63-2" id="__codelineno-63-2" name="__codelineno-63-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-63-3" id="__codelineno-63-3" name="__codelineno-63-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-63-4" id="__codelineno-63-4" name="__codelineno-63-4"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">100000</span>
|
||
<a href="#__codelineno-63-5" id="__codelineno-63-5" name="__codelineno-63-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">size</span><span class="p">)</span>
|
||
<a href="#__codelineno-63-6" id="__codelineno-63-6" name="__codelineno-63-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-63-7" id="__codelineno-63-7" name="__codelineno-63-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-63-8" id="__codelineno-63-8" name="__codelineno-63-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-64-1" id="__codelineno-64-1" name="__codelineno-64-1"></a><span class="c1">### 常數階 ###</span>
|
||
<a href="#__codelineno-64-2" id="__codelineno-64-2" name="__codelineno-64-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-64-3" id="__codelineno-64-3" name="__codelineno-64-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-64-4" id="__codelineno-64-4" name="__codelineno-64-4"></a><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100000</span>
|
||
<a href="#__codelineno-64-5" id="__codelineno-64-5" name="__codelineno-64-5"></a>
|
||
<a href="#__codelineno-64-6" id="__codelineno-64-6" name="__codelineno-64-6"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">size</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-64-7" id="__codelineno-64-7" name="__codelineno-64-7"></a>
|
||
<a href="#__codelineno-64-8" id="__codelineno-64-8" name="__codelineno-64-8"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-64-9" id="__codelineno-64-9" name="__codelineno-64-9"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 459px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20constant%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B8%B8%E6%95%B8%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20size%20%3D%2010%0A%20%20%20%20for%20_%20in%20range%28size%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20constant%28n%29%0A%20%20%20%20print%28%22%E5%B8%B8%E6%95%B8%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20constant%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B8%B8%E6%95%B8%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20size%20%3D%2010%0A%20%20%20%20for%20_%20in%20range%28size%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20constant%28n%29%0A%20%20%20%20print%28%22%E5%B8%B8%E6%95%B8%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<h3 id="2-on">2. 線性階 <span class="arithmatex">\(O(n)\)</span><a class="headerlink" href="#2-on" title="Permanent link">¶</a></h3>
|
||
<p>線性階的操作數量相對於輸入資料大小 <span class="arithmatex">\(n\)</span> 以線性級別增長。線性階通常出現在單層迴圈中:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="6:13"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio"/><input id="__tabbed_6_2" name="__tabbed_6" type="radio"/><input id="__tabbed_6_3" name="__tabbed_6" type="radio"/><input id="__tabbed_6_4" name="__tabbed_6" type="radio"/><input id="__tabbed_6_5" name="__tabbed_6" type="radio"/><input id="__tabbed_6_6" name="__tabbed_6" type="radio"/><input id="__tabbed_6_7" name="__tabbed_6" type="radio"/><input id="__tabbed_6_8" name="__tabbed_6" type="radio"/><input id="__tabbed_6_9" name="__tabbed_6" type="radio"/><input id="__tabbed_6_10" name="__tabbed_6" type="radio"/><input id="__tabbed_6_11" name="__tabbed_6" type="radio"/><input id="__tabbed_6_12" name="__tabbed_6" type="radio"/><input id="__tabbed_6_13" name="__tabbed_6" type="radio"/><div class="tabbed-labels"><label for="__tabbed_6_1">Python</label><label for="__tabbed_6_2">C++</label><label for="__tabbed_6_3">Java</label><label for="__tabbed_6_4">C#</label><label for="__tabbed_6_5">Go</label><label for="__tabbed_6_6">Swift</label><label for="__tabbed_6_7">JS</label><label for="__tabbed_6_8">TS</label><label for="__tabbed_6_9">Dart</label><label for="__tabbed_6_10">Rust</label><label for="__tabbed_6_11">C</label><label for="__tabbed_6_12">Kotlin</label><label for="__tabbed_6_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-65-1" id="__codelineno-65-1" name="__codelineno-65-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-65-2" id="__codelineno-65-2" name="__codelineno-65-2"></a><span class="w"> </span><span class="sd">"""線性階"""</span>
|
||
<a href="#__codelineno-65-3" id="__codelineno-65-3" name="__codelineno-65-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-65-4" id="__codelineno-65-4" name="__codelineno-65-4"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-65-5" id="__codelineno-65-5" name="__codelineno-65-5"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-65-6" id="__codelineno-65-6" name="__codelineno-65-6"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-66-1" id="__codelineno-66-1" name="__codelineno-66-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-66-2" id="__codelineno-66-2" name="__codelineno-66-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-66-3" id="__codelineno-66-3" name="__codelineno-66-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-66-4" id="__codelineno-66-4" name="__codelineno-66-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-66-5" id="__codelineno-66-5" name="__codelineno-66-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-66-6" id="__codelineno-66-6" name="__codelineno-66-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-66-7" id="__codelineno-66-7" name="__codelineno-66-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-67-1" id="__codelineno-67-1" name="__codelineno-67-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-67-2" id="__codelineno-67-2" name="__codelineno-67-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-67-3" id="__codelineno-67-3" name="__codelineno-67-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-67-4" id="__codelineno-67-4" name="__codelineno-67-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-67-5" id="__codelineno-67-5" name="__codelineno-67-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-67-6" id="__codelineno-67-6" name="__codelineno-67-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-67-7" id="__codelineno-67-7" name="__codelineno-67-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-68-1" id="__codelineno-68-1" name="__codelineno-68-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-68-2" id="__codelineno-68-2" name="__codelineno-68-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">Linear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-68-3" id="__codelineno-68-3" name="__codelineno-68-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-68-4" id="__codelineno-68-4" name="__codelineno-68-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||
<a href="#__codelineno-68-5" id="__codelineno-68-5" name="__codelineno-68-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-68-6" id="__codelineno-68-6" name="__codelineno-68-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-68-7" id="__codelineno-68-7" name="__codelineno-68-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-69-1" id="__codelineno-69-1" name="__codelineno-69-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-69-2" id="__codelineno-69-2" name="__codelineno-69-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">linear</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-69-3" id="__codelineno-69-3" name="__codelineno-69-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-69-4" id="__codelineno-69-4" name="__codelineno-69-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-69-5" id="__codelineno-69-5" name="__codelineno-69-5"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-69-6" id="__codelineno-69-6" name="__codelineno-69-6"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-69-7" id="__codelineno-69-7" name="__codelineno-69-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-69-8" id="__codelineno-69-8" name="__codelineno-69-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-70-1" id="__codelineno-70-1" name="__codelineno-70-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-70-2" id="__codelineno-70-2" name="__codelineno-70-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-70-3" id="__codelineno-70-3" name="__codelineno-70-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-70-4" id="__codelineno-70-4" name="__codelineno-70-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-70-5" id="__codelineno-70-5" name="__codelineno-70-5"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-70-6" id="__codelineno-70-6" name="__codelineno-70-6"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-70-7" id="__codelineno-70-7" name="__codelineno-70-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-70-8" id="__codelineno-70-8" name="__codelineno-70-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-71-1" id="__codelineno-71-1" name="__codelineno-71-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-71-2" id="__codelineno-71-2" name="__codelineno-71-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">linear</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-71-3" id="__codelineno-71-3" name="__codelineno-71-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-71-4" id="__codelineno-71-4" name="__codelineno-71-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-71-5" id="__codelineno-71-5" name="__codelineno-71-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-71-6" id="__codelineno-71-6" name="__codelineno-71-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-72-1" id="__codelineno-72-1" name="__codelineno-72-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-72-2" id="__codelineno-72-2" name="__codelineno-72-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">linear</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-72-3" id="__codelineno-72-3" name="__codelineno-72-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-72-4" id="__codelineno-72-4" name="__codelineno-72-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-72-5" id="__codelineno-72-5" name="__codelineno-72-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-72-6" id="__codelineno-72-6" name="__codelineno-72-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-73-1" id="__codelineno-73-1" name="__codelineno-73-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-73-2" id="__codelineno-73-2" name="__codelineno-73-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">linear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-73-3" id="__codelineno-73-3" name="__codelineno-73-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-73-4" id="__codelineno-73-4" name="__codelineno-73-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-73-5" id="__codelineno-73-5" name="__codelineno-73-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-73-6" id="__codelineno-73-6" name="__codelineno-73-6"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-73-7" id="__codelineno-73-7" name="__codelineno-73-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-73-8" id="__codelineno-73-8" name="__codelineno-73-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-74-1" id="__codelineno-74-1" name="__codelineno-74-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-74-2" id="__codelineno-74-2" name="__codelineno-74-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-74-3" id="__codelineno-74-3" name="__codelineno-74-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-74-4" id="__codelineno-74-4" name="__codelineno-74-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-74-5" id="__codelineno-74-5" name="__codelineno-74-5"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-74-6" id="__codelineno-74-6" name="__codelineno-74-6"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-74-7" id="__codelineno-74-7" name="__codelineno-74-7"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-74-8" id="__codelineno-74-8" name="__codelineno-74-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-75-1" id="__codelineno-75-1" name="__codelineno-75-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-75-2" id="__codelineno-75-2" name="__codelineno-75-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-75-3" id="__codelineno-75-3" name="__codelineno-75-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-75-4" id="__codelineno-75-4" name="__codelineno-75-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-75-5" id="__codelineno-75-5" name="__codelineno-75-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-75-6" id="__codelineno-75-6" name="__codelineno-75-6"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-75-7" id="__codelineno-75-7" name="__codelineno-75-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-75-8" id="__codelineno-75-8" name="__codelineno-75-8"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-76-1" id="__codelineno-76-1" name="__codelineno-76-1"></a><span class="cm">/* 線性階 */</span>
|
||
<a href="#__codelineno-76-2" id="__codelineno-76-2" name="__codelineno-76-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-76-3" id="__codelineno-76-3" name="__codelineno-76-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-76-4" id="__codelineno-76-4" name="__codelineno-76-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-76-5" id="__codelineno-76-5" name="__codelineno-76-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-76-6" id="__codelineno-76-6" name="__codelineno-76-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-76-7" id="__codelineno-76-7" name="__codelineno-76-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-77-1" id="__codelineno-77-1" name="__codelineno-77-1"></a><span class="c1">### 線性階 ###</span>
|
||
<a href="#__codelineno-77-2" id="__codelineno-77-2" name="__codelineno-77-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">linear</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-77-3" id="__codelineno-77-3" name="__codelineno-77-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-77-4" id="__codelineno-77-4" name="__codelineno-77-4"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-77-5" id="__codelineno-77-5" name="__codelineno-77-5"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-77-6" id="__codelineno-77-6" name="__codelineno-77-6"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 441px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20linear%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20linear%28n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20linear%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20linear%28n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>走訪陣列和走訪鏈結串列等操作的時間複雜度均為 <span class="arithmatex">\(O(n)\)</span> ,其中 <span class="arithmatex">\(n\)</span> 為陣列或鏈結串列的長度:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="7:13"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio"/><input id="__tabbed_7_2" name="__tabbed_7" type="radio"/><input id="__tabbed_7_3" name="__tabbed_7" type="radio"/><input id="__tabbed_7_4" name="__tabbed_7" type="radio"/><input id="__tabbed_7_5" name="__tabbed_7" type="radio"/><input id="__tabbed_7_6" name="__tabbed_7" type="radio"/><input id="__tabbed_7_7" name="__tabbed_7" type="radio"/><input id="__tabbed_7_8" name="__tabbed_7" type="radio"/><input id="__tabbed_7_9" name="__tabbed_7" type="radio"/><input id="__tabbed_7_10" name="__tabbed_7" type="radio"/><input id="__tabbed_7_11" name="__tabbed_7" type="radio"/><input id="__tabbed_7_12" name="__tabbed_7" type="radio"/><input id="__tabbed_7_13" name="__tabbed_7" type="radio"/><div class="tabbed-labels"><label for="__tabbed_7_1">Python</label><label for="__tabbed_7_2">C++</label><label for="__tabbed_7_3">Java</label><label for="__tabbed_7_4">C#</label><label for="__tabbed_7_5">Go</label><label for="__tabbed_7_6">Swift</label><label for="__tabbed_7_7">JS</label><label for="__tabbed_7_8">TS</label><label for="__tabbed_7_9">Dart</label><label for="__tabbed_7_10">Rust</label><label for="__tabbed_7_11">C</label><label for="__tabbed_7_12">Kotlin</label><label for="__tabbed_7_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-78-1" id="__codelineno-78-1" name="__codelineno-78-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">array_traversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-78-2" id="__codelineno-78-2" name="__codelineno-78-2"></a><span class="w"> </span><span class="sd">"""線性階(走訪陣列)"""</span>
|
||
<a href="#__codelineno-78-3" id="__codelineno-78-3" name="__codelineno-78-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-78-4" id="__codelineno-78-4" name="__codelineno-78-4"></a> <span class="c1"># 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-78-5" id="__codelineno-78-5" name="__codelineno-78-5"></a> <span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="n">nums</span><span class="p">:</span>
|
||
<a href="#__codelineno-78-6" id="__codelineno-78-6" name="__codelineno-78-6"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-78-7" id="__codelineno-78-7" name="__codelineno-78-7"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-79-1" id="__codelineno-79-1" name="__codelineno-79-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-79-2" id="__codelineno-79-2" name="__codelineno-79-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">arrayTraversal</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="o">&</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-79-3" id="__codelineno-79-3" name="__codelineno-79-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-79-4" id="__codelineno-79-4" name="__codelineno-79-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-79-5" id="__codelineno-79-5" name="__codelineno-79-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-79-6" id="__codelineno-79-6" name="__codelineno-79-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-79-7" id="__codelineno-79-7" name="__codelineno-79-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-79-8" id="__codelineno-79-8" name="__codelineno-79-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-79-9" id="__codelineno-79-9" name="__codelineno-79-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-80-1" id="__codelineno-80-1" name="__codelineno-80-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-80-2" id="__codelineno-80-2" name="__codelineno-80-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">arrayTraversal</span><span class="p">(</span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-80-3" id="__codelineno-80-3" name="__codelineno-80-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-80-4" id="__codelineno-80-4" name="__codelineno-80-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-80-5" id="__codelineno-80-5" name="__codelineno-80-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-80-6" id="__codelineno-80-6" name="__codelineno-80-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-80-7" id="__codelineno-80-7" name="__codelineno-80-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-80-8" id="__codelineno-80-8" name="__codelineno-80-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-80-9" id="__codelineno-80-9" name="__codelineno-80-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-81-1" id="__codelineno-81-1" name="__codelineno-81-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-81-2" id="__codelineno-81-2" name="__codelineno-81-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">ArrayTraversal</span><span class="p">(</span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-81-3" id="__codelineno-81-3" name="__codelineno-81-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-81-4" id="__codelineno-81-4" name="__codelineno-81-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-81-5" id="__codelineno-81-5" name="__codelineno-81-5"></a><span class="w"> </span><span class="k">foreach</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-81-6" id="__codelineno-81-6" name="__codelineno-81-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-81-7" id="__codelineno-81-7" name="__codelineno-81-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-81-8" id="__codelineno-81-8" name="__codelineno-81-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-81-9" id="__codelineno-81-9" name="__codelineno-81-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-82-1" id="__codelineno-82-1" name="__codelineno-82-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-82-2" id="__codelineno-82-2" name="__codelineno-82-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">arrayTraversal</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-82-3" id="__codelineno-82-3" name="__codelineno-82-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-82-4" id="__codelineno-82-4" name="__codelineno-82-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-82-5" id="__codelineno-82-5" name="__codelineno-82-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">range</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-82-6" id="__codelineno-82-6" name="__codelineno-82-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-82-7" id="__codelineno-82-7" name="__codelineno-82-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-82-8" id="__codelineno-82-8" name="__codelineno-82-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-82-9" id="__codelineno-82-9" name="__codelineno-82-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-83-1" id="__codelineno-83-1" name="__codelineno-83-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-83-2" id="__codelineno-83-2" name="__codelineno-83-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">arrayTraversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="nb">Int</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-83-3" id="__codelineno-83-3" name="__codelineno-83-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-83-4" id="__codelineno-83-4" name="__codelineno-83-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-83-5" id="__codelineno-83-5" name="__codelineno-83-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-83-6" id="__codelineno-83-6" name="__codelineno-83-6"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-83-7" id="__codelineno-83-7" name="__codelineno-83-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-83-8" id="__codelineno-83-8" name="__codelineno-83-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-83-9" id="__codelineno-83-9" name="__codelineno-83-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-84-1" id="__codelineno-84-1" name="__codelineno-84-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-84-2" id="__codelineno-84-2" name="__codelineno-84-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">arrayTraversal</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-84-3" id="__codelineno-84-3" name="__codelineno-84-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-84-4" id="__codelineno-84-4" name="__codelineno-84-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-84-5" id="__codelineno-84-5" name="__codelineno-84-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-84-6" id="__codelineno-84-6" name="__codelineno-84-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-84-7" id="__codelineno-84-7" name="__codelineno-84-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-84-8" id="__codelineno-84-8" name="__codelineno-84-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-84-9" id="__codelineno-84-9" name="__codelineno-84-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-85-1" id="__codelineno-85-1" name="__codelineno-85-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-85-2" id="__codelineno-85-2" name="__codelineno-85-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">arrayTraversal</span><span class="p">(</span><span class="nx">nums</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[])</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-85-3" id="__codelineno-85-3" name="__codelineno-85-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-85-4" id="__codelineno-85-4" name="__codelineno-85-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-85-5" id="__codelineno-85-5" name="__codelineno-85-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-85-6" id="__codelineno-85-6" name="__codelineno-85-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-85-7" id="__codelineno-85-7" name="__codelineno-85-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-85-8" id="__codelineno-85-8" name="__codelineno-85-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-85-9" id="__codelineno-85-9" name="__codelineno-85-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-86-1" id="__codelineno-86-1" name="__codelineno-86-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-86-2" id="__codelineno-86-2" name="__codelineno-86-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">arrayTraversal</span><span class="p">(</span><span class="n">List</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-86-3" id="__codelineno-86-3" name="__codelineno-86-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-86-4" id="__codelineno-86-4" name="__codelineno-86-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-86-5" id="__codelineno-86-5" name="__codelineno-86-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">_num</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-86-6" id="__codelineno-86-6" name="__codelineno-86-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-86-7" id="__codelineno-86-7" name="__codelineno-86-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-86-8" id="__codelineno-86-8" name="__codelineno-86-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-86-9" id="__codelineno-86-9" name="__codelineno-86-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-87-1" id="__codelineno-87-1" name="__codelineno-87-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-87-2" id="__codelineno-87-2" name="__codelineno-87-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">array_traversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="p">[</span><span class="kt">i32</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-87-3" id="__codelineno-87-3" name="__codelineno-87-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-87-4" id="__codelineno-87-4" name="__codelineno-87-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-87-5" id="__codelineno-87-5" name="__codelineno-87-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-87-6" id="__codelineno-87-6" name="__codelineno-87-6"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-87-7" id="__codelineno-87-7" name="__codelineno-87-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-87-8" id="__codelineno-87-8" name="__codelineno-87-8"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-87-9" id="__codelineno-87-9" name="__codelineno-87-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-88-1" id="__codelineno-88-1" name="__codelineno-88-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-88-2" id="__codelineno-88-2" name="__codelineno-88-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">arrayTraversal</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-88-3" id="__codelineno-88-3" name="__codelineno-88-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-88-4" id="__codelineno-88-4" name="__codelineno-88-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-88-5" id="__codelineno-88-5" name="__codelineno-88-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-88-6" id="__codelineno-88-6" name="__codelineno-88-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-88-7" id="__codelineno-88-7" name="__codelineno-88-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-88-8" id="__codelineno-88-8" name="__codelineno-88-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-88-9" id="__codelineno-88-9" name="__codelineno-88-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-89-1" id="__codelineno-89-1" name="__codelineno-89-1"></a><span class="cm">/* 線性階(走訪陣列) */</span>
|
||
<a href="#__codelineno-89-2" id="__codelineno-89-2" name="__codelineno-89-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">arrayTraversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="n">IntArray</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-89-3" id="__codelineno-89-3" name="__codelineno-89-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-89-4" id="__codelineno-89-4" name="__codelineno-89-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-89-5" id="__codelineno-89-5" name="__codelineno-89-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">num</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-89-6" id="__codelineno-89-6" name="__codelineno-89-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-89-7" id="__codelineno-89-7" name="__codelineno-89-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-89-8" id="__codelineno-89-8" name="__codelineno-89-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-89-9" id="__codelineno-89-9" name="__codelineno-89-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-90-1" id="__codelineno-90-1" name="__codelineno-90-1"></a><span class="c1">### 線性階(走訪陣列)###</span>
|
||
<a href="#__codelineno-90-2" id="__codelineno-90-2" name="__codelineno-90-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">array_traversal</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
|
||
<a href="#__codelineno-90-3" id="__codelineno-90-3" name="__codelineno-90-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-90-4" id="__codelineno-90-4" name="__codelineno-90-4"></a>
|
||
<a href="#__codelineno-90-5" id="__codelineno-90-5" name="__codelineno-90-5"></a><span class="w"> </span><span class="c1"># 迴圈次數與陣列長度成正比</span>
|
||
<a href="#__codelineno-90-6" id="__codelineno-90-6" name="__codelineno-90-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span>
|
||
<a href="#__codelineno-90-7" id="__codelineno-90-7" name="__codelineno-90-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-90-8" id="__codelineno-90-8" name="__codelineno-90-8"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-90-9" id="__codelineno-90-9" name="__codelineno-90-9"></a>
|
||
<a href="#__codelineno-90-10" id="__codelineno-90-10" name="__codelineno-90-10"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-90-11" id="__codelineno-90-11" name="__codelineno-90-11"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 459px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20array_traversal%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E9%9A%8E%EF%BC%88%E8%B5%B0%E8%A8%AA%E9%99%A3%E5%88%97%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E8%BF%B4%E5%9C%88%E6%AC%A1%E6%95%B8%E8%88%87%E9%99%A3%E5%88%97%E9%95%B7%E5%BA%A6%E6%88%90%E6%AD%A3%E6%AF%94%0A%20%20%20%20for%20num%20in%20nums%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20array_traversal%28%5B0%5D%20%2A%20n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E9%9A%8E%EF%BC%88%E8%B5%B0%E8%A8%AA%E9%99%A3%E5%88%97%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20array_traversal%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E9%9A%8E%EF%BC%88%E8%B5%B0%E8%A8%AA%E9%99%A3%E5%88%97%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E8%BF%B4%E5%9C%88%E6%AC%A1%E6%95%B8%E8%88%87%E9%99%A3%E5%88%97%E9%95%B7%E5%BA%A6%E6%88%90%E6%AD%A3%E6%AF%94%0A%20%20%20%20for%20num%20in%20nums%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20array_traversal%28%5B0%5D%20%2A%20n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E9%9A%8E%EF%BC%88%E8%B5%B0%E8%A8%AA%E9%99%A3%E5%88%97%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>值得注意的是,<strong>輸入資料大小 <span class="arithmatex">\(n\)</span> 需根據輸入資料的型別來具體確定</strong>。比如在第一個示例中,變數 <span class="arithmatex">\(n\)</span> 為輸入資料大小;在第二個示例中,陣列長度 <span class="arithmatex">\(n\)</span> 為資料大小。</p>
|
||
<h3 id="3-on2">3. 平方階 <span class="arithmatex">\(O(n^2)\)</span><a class="headerlink" href="#3-on2" title="Permanent link">¶</a></h3>
|
||
<p>平方階的操作數量相對於輸入資料大小 <span class="arithmatex">\(n\)</span> 以平方級別增長。平方階通常出現在巢狀迴圈中,外層迴圈和內層迴圈的時間複雜度都為 <span class="arithmatex">\(O(n)\)</span> ,因此總體的時間複雜度為 <span class="arithmatex">\(O(n^2)\)</span> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="8:13"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio"/><input id="__tabbed_8_2" name="__tabbed_8" type="radio"/><input id="__tabbed_8_3" name="__tabbed_8" type="radio"/><input id="__tabbed_8_4" name="__tabbed_8" type="radio"/><input id="__tabbed_8_5" name="__tabbed_8" type="radio"/><input id="__tabbed_8_6" name="__tabbed_8" type="radio"/><input id="__tabbed_8_7" name="__tabbed_8" type="radio"/><input id="__tabbed_8_8" name="__tabbed_8" type="radio"/><input id="__tabbed_8_9" name="__tabbed_8" type="radio"/><input id="__tabbed_8_10" name="__tabbed_8" type="radio"/><input id="__tabbed_8_11" name="__tabbed_8" type="radio"/><input id="__tabbed_8_12" name="__tabbed_8" type="radio"/><input id="__tabbed_8_13" name="__tabbed_8" type="radio"/><div class="tabbed-labels"><label for="__tabbed_8_1">Python</label><label for="__tabbed_8_2">C++</label><label for="__tabbed_8_3">Java</label><label for="__tabbed_8_4">C#</label><label for="__tabbed_8_5">Go</label><label for="__tabbed_8_6">Swift</label><label for="__tabbed_8_7">JS</label><label for="__tabbed_8_8">TS</label><label for="__tabbed_8_9">Dart</label><label for="__tabbed_8_10">Rust</label><label for="__tabbed_8_11">C</label><label for="__tabbed_8_12">Kotlin</label><label for="__tabbed_8_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-91-1" id="__codelineno-91-1" name="__codelineno-91-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-91-2" id="__codelineno-91-2" name="__codelineno-91-2"></a><span class="w"> </span><span class="sd">"""平方階"""</span>
|
||
<a href="#__codelineno-91-3" id="__codelineno-91-3" name="__codelineno-91-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-91-4" id="__codelineno-91-4" name="__codelineno-91-4"></a> <span class="c1"># 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-91-5" id="__codelineno-91-5" name="__codelineno-91-5"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-91-6" id="__codelineno-91-6" name="__codelineno-91-6"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-91-7" id="__codelineno-91-7" name="__codelineno-91-7"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-91-8" id="__codelineno-91-8" name="__codelineno-91-8"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-92-1" id="__codelineno-92-1" name="__codelineno-92-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-92-2" id="__codelineno-92-2" name="__codelineno-92-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-92-3" id="__codelineno-92-3" name="__codelineno-92-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-92-4" id="__codelineno-92-4" name="__codelineno-92-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-92-5" id="__codelineno-92-5" name="__codelineno-92-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-92-6" id="__codelineno-92-6" name="__codelineno-92-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-92-7" id="__codelineno-92-7" name="__codelineno-92-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-92-8" id="__codelineno-92-8" name="__codelineno-92-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-92-9" id="__codelineno-92-9" name="__codelineno-92-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-92-10" id="__codelineno-92-10" name="__codelineno-92-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-92-11" id="__codelineno-92-11" name="__codelineno-92-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-93-1" id="__codelineno-93-1" name="__codelineno-93-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-93-2" id="__codelineno-93-2" name="__codelineno-93-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-93-3" id="__codelineno-93-3" name="__codelineno-93-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-93-4" id="__codelineno-93-4" name="__codelineno-93-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-93-5" id="__codelineno-93-5" name="__codelineno-93-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-93-6" id="__codelineno-93-6" name="__codelineno-93-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-93-7" id="__codelineno-93-7" name="__codelineno-93-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-93-8" id="__codelineno-93-8" name="__codelineno-93-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-93-9" id="__codelineno-93-9" name="__codelineno-93-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-93-10" id="__codelineno-93-10" name="__codelineno-93-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-93-11" id="__codelineno-93-11" name="__codelineno-93-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-94-1" id="__codelineno-94-1" name="__codelineno-94-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-94-2" id="__codelineno-94-2" name="__codelineno-94-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">Quadratic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-94-3" id="__codelineno-94-3" name="__codelineno-94-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-94-4" id="__codelineno-94-4" name="__codelineno-94-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-94-5" id="__codelineno-94-5" name="__codelineno-94-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-94-6" id="__codelineno-94-6" name="__codelineno-94-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-94-7" id="__codelineno-94-7" name="__codelineno-94-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-94-8" id="__codelineno-94-8" name="__codelineno-94-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-94-9" id="__codelineno-94-9" name="__codelineno-94-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-94-10" id="__codelineno-94-10" name="__codelineno-94-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-94-11" id="__codelineno-94-11" name="__codelineno-94-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-95-1" id="__codelineno-95-1" name="__codelineno-95-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-95-2" id="__codelineno-95-2" name="__codelineno-95-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">quadratic</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-95-3" id="__codelineno-95-3" name="__codelineno-95-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-95-4" id="__codelineno-95-4" name="__codelineno-95-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-95-5" id="__codelineno-95-5" name="__codelineno-95-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-95-6" id="__codelineno-95-6" name="__codelineno-95-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-95-7" id="__codelineno-95-7" name="__codelineno-95-7"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-95-8" id="__codelineno-95-8" name="__codelineno-95-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-95-9" id="__codelineno-95-9" name="__codelineno-95-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-95-10" id="__codelineno-95-10" name="__codelineno-95-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-95-11" id="__codelineno-95-11" name="__codelineno-95-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-96-1" id="__codelineno-96-1" name="__codelineno-96-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-96-2" id="__codelineno-96-2" name="__codelineno-96-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-96-3" id="__codelineno-96-3" name="__codelineno-96-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-96-4" id="__codelineno-96-4" name="__codelineno-96-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-96-5" id="__codelineno-96-5" name="__codelineno-96-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-96-6" id="__codelineno-96-6" name="__codelineno-96-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-96-7" id="__codelineno-96-7" name="__codelineno-96-7"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-96-8" id="__codelineno-96-8" name="__codelineno-96-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-96-9" id="__codelineno-96-9" name="__codelineno-96-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-96-10" id="__codelineno-96-10" name="__codelineno-96-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-96-11" id="__codelineno-96-11" name="__codelineno-96-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-97-1" id="__codelineno-97-1" name="__codelineno-97-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-97-2" id="__codelineno-97-2" name="__codelineno-97-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">quadratic</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-97-3" id="__codelineno-97-3" name="__codelineno-97-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-97-4" id="__codelineno-97-4" name="__codelineno-97-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-97-5" id="__codelineno-97-5" name="__codelineno-97-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-97-6" id="__codelineno-97-6" name="__codelineno-97-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-97-7" id="__codelineno-97-7" name="__codelineno-97-7"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-97-8" id="__codelineno-97-8" name="__codelineno-97-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-97-9" id="__codelineno-97-9" name="__codelineno-97-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-97-10" id="__codelineno-97-10" name="__codelineno-97-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-97-11" id="__codelineno-97-11" name="__codelineno-97-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-98-1" id="__codelineno-98-1" name="__codelineno-98-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-98-2" id="__codelineno-98-2" name="__codelineno-98-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">quadratic</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-98-3" id="__codelineno-98-3" name="__codelineno-98-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-98-4" id="__codelineno-98-4" name="__codelineno-98-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-98-5" id="__codelineno-98-5" name="__codelineno-98-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-98-6" id="__codelineno-98-6" name="__codelineno-98-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-98-7" id="__codelineno-98-7" name="__codelineno-98-7"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-98-8" id="__codelineno-98-8" name="__codelineno-98-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-98-9" id="__codelineno-98-9" name="__codelineno-98-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-98-10" id="__codelineno-98-10" name="__codelineno-98-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-98-11" id="__codelineno-98-11" name="__codelineno-98-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-99-1" id="__codelineno-99-1" name="__codelineno-99-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-99-2" id="__codelineno-99-2" name="__codelineno-99-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">quadratic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-99-3" id="__codelineno-99-3" name="__codelineno-99-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-99-4" id="__codelineno-99-4" name="__codelineno-99-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-99-5" id="__codelineno-99-5" name="__codelineno-99-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-99-6" id="__codelineno-99-6" name="__codelineno-99-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-99-7" id="__codelineno-99-7" name="__codelineno-99-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-99-8" id="__codelineno-99-8" name="__codelineno-99-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-99-9" id="__codelineno-99-9" name="__codelineno-99-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-99-10" id="__codelineno-99-10" name="__codelineno-99-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-99-11" id="__codelineno-99-11" name="__codelineno-99-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-100-1" id="__codelineno-100-1" name="__codelineno-100-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-100-2" id="__codelineno-100-2" name="__codelineno-100-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-100-3" id="__codelineno-100-3" name="__codelineno-100-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-100-4" id="__codelineno-100-4" name="__codelineno-100-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-100-5" id="__codelineno-100-5" name="__codelineno-100-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-100-6" id="__codelineno-100-6" name="__codelineno-100-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-100-7" id="__codelineno-100-7" name="__codelineno-100-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-100-8" id="__codelineno-100-8" name="__codelineno-100-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-100-9" id="__codelineno-100-9" name="__codelineno-100-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-100-10" id="__codelineno-100-10" name="__codelineno-100-10"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-100-11" id="__codelineno-100-11" name="__codelineno-100-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-101-1" id="__codelineno-101-1" name="__codelineno-101-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-101-2" id="__codelineno-101-2" name="__codelineno-101-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-101-3" id="__codelineno-101-3" name="__codelineno-101-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-101-4" id="__codelineno-101-4" name="__codelineno-101-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-101-5" id="__codelineno-101-5" name="__codelineno-101-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-101-6" id="__codelineno-101-6" name="__codelineno-101-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-101-7" id="__codelineno-101-7" name="__codelineno-101-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-101-8" id="__codelineno-101-8" name="__codelineno-101-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-101-9" id="__codelineno-101-9" name="__codelineno-101-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-101-10" id="__codelineno-101-10" name="__codelineno-101-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-101-11" id="__codelineno-101-11" name="__codelineno-101-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-102-1" id="__codelineno-102-1" name="__codelineno-102-1"></a><span class="cm">/* 平方階 */</span>
|
||
<a href="#__codelineno-102-2" id="__codelineno-102-2" name="__codelineno-102-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-102-3" id="__codelineno-102-3" name="__codelineno-102-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-102-4" id="__codelineno-102-4" name="__codelineno-102-4"></a><span class="w"> </span><span class="c1">// 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-102-5" id="__codelineno-102-5" name="__codelineno-102-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-102-6" id="__codelineno-102-6" name="__codelineno-102-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-102-7" id="__codelineno-102-7" name="__codelineno-102-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-102-8" id="__codelineno-102-8" name="__codelineno-102-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-102-9" id="__codelineno-102-9" name="__codelineno-102-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-102-10" id="__codelineno-102-10" name="__codelineno-102-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-102-11" id="__codelineno-102-11" name="__codelineno-102-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-103-1" id="__codelineno-103-1" name="__codelineno-103-1"></a><span class="c1">### 平方階 ###</span>
|
||
<a href="#__codelineno-103-2" id="__codelineno-103-2" name="__codelineno-103-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">quadratic</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-103-3" id="__codelineno-103-3" name="__codelineno-103-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-103-4" id="__codelineno-103-4" name="__codelineno-103-4"></a>
|
||
<a href="#__codelineno-103-5" id="__codelineno-103-5" name="__codelineno-103-5"></a><span class="w"> </span><span class="c1"># 迴圈次數與資料大小 n 成平方關係</span>
|
||
<a href="#__codelineno-103-6" id="__codelineno-103-6" name="__codelineno-103-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">...</span><span class="n">n</span>
|
||
<a href="#__codelineno-103-7" id="__codelineno-103-7" name="__codelineno-103-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">...</span><span class="n">n</span>
|
||
<a href="#__codelineno-103-8" id="__codelineno-103-8" name="__codelineno-103-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-103-9" id="__codelineno-103-9" name="__codelineno-103-9"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-103-10" id="__codelineno-103-10" name="__codelineno-103-10"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-103-11" id="__codelineno-103-11" name="__codelineno-103-11"></a>
|
||
<a href="#__codelineno-103-12" id="__codelineno-103-12" name="__codelineno-103-12"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-103-13" id="__codelineno-103-13" name="__codelineno-103-13"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 477px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20quadratic%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B9%B3%E6%96%B9%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E8%BF%B4%E5%9C%88%E6%AC%A1%E6%95%B8%E8%88%87%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%E6%88%90%E5%B9%B3%E6%96%B9%E9%97%9C%E4%BF%82%0A%20%20%20%20for%20i%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20for%20j%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20quadratic%28n%29%0A%20%20%20%20print%28%22%E5%B9%B3%E6%96%B9%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20quadratic%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B9%B3%E6%96%B9%E9%9A%8E%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E8%BF%B4%E5%9C%88%E6%AC%A1%E6%95%B8%E8%88%87%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%E6%88%90%E5%B9%B3%E6%96%B9%E9%97%9C%E4%BF%82%0A%20%20%20%20for%20i%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20for%20j%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20quadratic%28n%29%0A%20%20%20%20print%28%22%E5%B9%B3%E6%96%B9%E9%9A%8E%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>圖 2-10 對比了常數階、線性階和平方階三種時間複雜度。</p>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_constant_linear_quadratic.png" data-dark-src="/assets/figure-svg/figures/888adb4e3b2fc8ed651f0b2d.json" data-src="/assets/figure-svg/figures/152b5b27b1b00537243276ed.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_constant_linear_quadratic.svg" data-theme="light" tabindex="-1" type="image/svg+xml">常數階、線性階和平方階的時間複雜度</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_constant_linear_quadratic.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">常數階、線性階和平方階的時間複雜度</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-10 常數階、線性階和平方階的時間複雜度 </p>
|
||
<p>以泡沫排序為例,外層迴圈執行 <span class="arithmatex">\(n - 1\)</span> 次,內層迴圈執行 <span class="arithmatex">\(n-1\)</span>、<span class="arithmatex">\(n-2\)</span>、<span class="arithmatex">\(\dots\)</span>、<span class="arithmatex">\(2\)</span>、<span class="arithmatex">\(1\)</span> 次,平均為 <span class="arithmatex">\(n / 2\)</span> 次,因此時間複雜度為 <span class="arithmatex">\(O((n - 1) n / 2) = O(n^2)\)</span> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="9:13"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio"/><input id="__tabbed_9_2" name="__tabbed_9" type="radio"/><input id="__tabbed_9_3" name="__tabbed_9" type="radio"/><input id="__tabbed_9_4" name="__tabbed_9" type="radio"/><input id="__tabbed_9_5" name="__tabbed_9" type="radio"/><input id="__tabbed_9_6" name="__tabbed_9" type="radio"/><input id="__tabbed_9_7" name="__tabbed_9" type="radio"/><input id="__tabbed_9_8" name="__tabbed_9" type="radio"/><input id="__tabbed_9_9" name="__tabbed_9" type="radio"/><input id="__tabbed_9_10" name="__tabbed_9" type="radio"/><input id="__tabbed_9_11" name="__tabbed_9" type="radio"/><input id="__tabbed_9_12" name="__tabbed_9" type="radio"/><input id="__tabbed_9_13" name="__tabbed_9" type="radio"/><div class="tabbed-labels"><label for="__tabbed_9_1">Python</label><label for="__tabbed_9_2">C++</label><label for="__tabbed_9_3">Java</label><label for="__tabbed_9_4">C#</label><label for="__tabbed_9_5">Go</label><label for="__tabbed_9_6">Swift</label><label for="__tabbed_9_7">JS</label><label for="__tabbed_9_8">TS</label><label for="__tabbed_9_9">Dart</label><label for="__tabbed_9_10">Rust</label><label for="__tabbed_9_11">C</label><label for="__tabbed_9_12">Kotlin</label><label for="__tabbed_9_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-104-1" id="__codelineno-104-1" name="__codelineno-104-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">bubble_sort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-104-2" id="__codelineno-104-2" name="__codelineno-104-2"></a><span class="w"> </span><span class="sd">"""平方階(泡沫排序)"""</span>
|
||
<a href="#__codelineno-104-3" id="__codelineno-104-3" name="__codelineno-104-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># 計數器</span>
|
||
<a href="#__codelineno-104-4" id="__codelineno-104-4" name="__codelineno-104-4"></a> <span class="c1"># 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-104-5" id="__codelineno-104-5" name="__codelineno-104-5"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||
<a href="#__codelineno-104-6" id="__codelineno-104-6" name="__codelineno-104-6"></a> <span class="c1"># 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-104-7" id="__codelineno-104-7" name="__codelineno-104-7"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
|
||
<a href="#__codelineno-104-8" id="__codelineno-104-8" name="__codelineno-104-8"></a> <span class="k">if</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">></span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]:</span>
|
||
<a href="#__codelineno-104-9" id="__codelineno-104-9" name="__codelineno-104-9"></a> <span class="c1"># 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-104-10" id="__codelineno-104-10" name="__codelineno-104-10"></a> <span class="n">tmp</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
|
||
<a href="#__codelineno-104-11" id="__codelineno-104-11" name="__codelineno-104-11"></a> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||
<a href="#__codelineno-104-12" id="__codelineno-104-12" name="__codelineno-104-12"></a> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp</span>
|
||
<a href="#__codelineno-104-13" id="__codelineno-104-13" name="__codelineno-104-13"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">3</span> <span class="c1"># 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-104-14" id="__codelineno-104-14" name="__codelineno-104-14"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-105-1" id="__codelineno-105-1" name="__codelineno-105-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-105-2" id="__codelineno-105-2" name="__codelineno-105-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">bubbleSort</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="o">&</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-105-3" id="__codelineno-105-3" name="__codelineno-105-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-105-4" id="__codelineno-105-4" name="__codelineno-105-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-105-5" id="__codelineno-105-5" name="__codelineno-105-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-105-6" id="__codelineno-105-6" name="__codelineno-105-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-105-7" id="__codelineno-105-7" name="__codelineno-105-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-105-8" id="__codelineno-105-8" name="__codelineno-105-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-105-9" id="__codelineno-105-9" name="__codelineno-105-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-105-10" id="__codelineno-105-10" name="__codelineno-105-10"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-105-11" id="__codelineno-105-11" name="__codelineno-105-11"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-105-12" id="__codelineno-105-12" name="__codelineno-105-12"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-105-13" id="__codelineno-105-13" name="__codelineno-105-13"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-105-14" id="__codelineno-105-14" name="__codelineno-105-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-105-15" id="__codelineno-105-15" name="__codelineno-105-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-105-16" id="__codelineno-105-16" name="__codelineno-105-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-105-17" id="__codelineno-105-17" name="__codelineno-105-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-105-18" id="__codelineno-105-18" name="__codelineno-105-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-106-1" id="__codelineno-106-1" name="__codelineno-106-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-106-2" id="__codelineno-106-2" name="__codelineno-106-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">bubbleSort</span><span class="p">(</span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-106-3" id="__codelineno-106-3" name="__codelineno-106-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-106-4" id="__codelineno-106-4" name="__codelineno-106-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-106-5" id="__codelineno-106-5" name="__codelineno-106-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-106-6" id="__codelineno-106-6" name="__codelineno-106-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-106-7" id="__codelineno-106-7" name="__codelineno-106-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-106-8" id="__codelineno-106-8" name="__codelineno-106-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-106-9" id="__codelineno-106-9" name="__codelineno-106-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-106-10" id="__codelineno-106-10" name="__codelineno-106-10"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="p">;</span>
|
||
<a href="#__codelineno-106-11" id="__codelineno-106-11" name="__codelineno-106-11"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="p">;</span>
|
||
<a href="#__codelineno-106-12" id="__codelineno-106-12" name="__codelineno-106-12"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-106-13" id="__codelineno-106-13" name="__codelineno-106-13"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-106-14" id="__codelineno-106-14" name="__codelineno-106-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-106-15" id="__codelineno-106-15" name="__codelineno-106-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-106-16" id="__codelineno-106-16" name="__codelineno-106-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-106-17" id="__codelineno-106-17" name="__codelineno-106-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-106-18" id="__codelineno-106-18" name="__codelineno-106-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-107-1" id="__codelineno-107-1" name="__codelineno-107-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-107-2" id="__codelineno-107-2" name="__codelineno-107-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">BubbleSort</span><span class="p">(</span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-107-3" id="__codelineno-107-3" name="__codelineno-107-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-107-4" id="__codelineno-107-4" name="__codelineno-107-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-107-5" id="__codelineno-107-5" name="__codelineno-107-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">Length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-107-6" id="__codelineno-107-6" name="__codelineno-107-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-107-7" id="__codelineno-107-7" name="__codelineno-107-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-107-8" id="__codelineno-107-8" name="__codelineno-107-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-107-9" id="__codelineno-107-9" name="__codelineno-107-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-107-10" id="__codelineno-107-10" name="__codelineno-107-10"></a><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">])</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">],</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]);</span>
|
||
<a href="#__codelineno-107-11" id="__codelineno-107-11" name="__codelineno-107-11"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-107-12" id="__codelineno-107-12" name="__codelineno-107-12"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-107-13" id="__codelineno-107-13" name="__codelineno-107-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-107-14" id="__codelineno-107-14" name="__codelineno-107-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-107-15" id="__codelineno-107-15" name="__codelineno-107-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-107-16" id="__codelineno-107-16" name="__codelineno-107-16"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-108-1" id="__codelineno-108-1" name="__codelineno-108-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-108-2" id="__codelineno-108-2" name="__codelineno-108-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">bubbleSort</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-108-3" id="__codelineno-108-3" name="__codelineno-108-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-108-4" id="__codelineno-108-4" name="__codelineno-108-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-108-5" id="__codelineno-108-5" name="__codelineno-108-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">--</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-108-6" id="__codelineno-108-6" name="__codelineno-108-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-108-7" id="__codelineno-108-7" name="__codelineno-108-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-108-8" id="__codelineno-108-8" name="__codelineno-108-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-108-9" id="__codelineno-108-9" name="__codelineno-108-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-108-10" id="__codelineno-108-10" name="__codelineno-108-10"></a><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span>
|
||
<a href="#__codelineno-108-11" id="__codelineno-108-11" name="__codelineno-108-11"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
|
||
<a href="#__codelineno-108-12" id="__codelineno-108-12" name="__codelineno-108-12"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tmp</span>
|
||
<a href="#__codelineno-108-13" id="__codelineno-108-13" name="__codelineno-108-13"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-108-14" id="__codelineno-108-14" name="__codelineno-108-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-108-15" id="__codelineno-108-15" name="__codelineno-108-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-108-16" id="__codelineno-108-16" name="__codelineno-108-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-108-17" id="__codelineno-108-17" name="__codelineno-108-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-108-18" id="__codelineno-108-18" name="__codelineno-108-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-109-1" id="__codelineno-109-1" name="__codelineno-109-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-109-2" id="__codelineno-109-2" name="__codelineno-109-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">bubbleSort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kr">inout</span><span class="w"> </span><span class="p">[</span><span class="nb">Int</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-109-3" id="__codelineno-109-3" name="__codelineno-109-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-109-4" id="__codelineno-109-4" name="__codelineno-109-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-109-5" id="__codelineno-109-5" name="__codelineno-109-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="p">.</span><span class="bp">dropFirst</span><span class="p">().</span><span class="n">reversed</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-109-6" id="__codelineno-109-6" name="__codelineno-109-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-109-7" id="__codelineno-109-7" name="__codelineno-109-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-109-8" id="__codelineno-109-8" name="__codelineno-109-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-109-9" id="__codelineno-109-9" name="__codelineno-109-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-109-10" id="__codelineno-109-10" name="__codelineno-109-10"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">tmp</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
|
||
<a href="#__codelineno-109-11" id="__codelineno-109-11" name="__codelineno-109-11"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span>
|
||
<a href="#__codelineno-109-12" id="__codelineno-109-12" name="__codelineno-109-12"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">tmp</span>
|
||
<a href="#__codelineno-109-13" id="__codelineno-109-13" name="__codelineno-109-13"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-109-14" id="__codelineno-109-14" name="__codelineno-109-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-109-15" id="__codelineno-109-15" name="__codelineno-109-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-109-16" id="__codelineno-109-16" name="__codelineno-109-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-109-17" id="__codelineno-109-17" name="__codelineno-109-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-109-18" id="__codelineno-109-18" name="__codelineno-109-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-110-1" id="__codelineno-110-1" name="__codelineno-110-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-110-2" id="__codelineno-110-2" name="__codelineno-110-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">bubbleSort</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-110-3" id="__codelineno-110-3" name="__codelineno-110-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-110-4" id="__codelineno-110-4" name="__codelineno-110-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-110-5" id="__codelineno-110-5" name="__codelineno-110-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-110-6" id="__codelineno-110-6" name="__codelineno-110-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-110-7" id="__codelineno-110-7" name="__codelineno-110-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-110-8" id="__codelineno-110-8" name="__codelineno-110-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-110-9" id="__codelineno-110-9" name="__codelineno-110-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-110-10" id="__codelineno-110-10" name="__codelineno-110-10"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-110-11" id="__codelineno-110-11" name="__codelineno-110-11"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-110-12" id="__codelineno-110-12" name="__codelineno-110-12"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-110-13" id="__codelineno-110-13" name="__codelineno-110-13"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-110-14" id="__codelineno-110-14" name="__codelineno-110-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-110-15" id="__codelineno-110-15" name="__codelineno-110-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-110-16" id="__codelineno-110-16" name="__codelineno-110-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-110-17" id="__codelineno-110-17" name="__codelineno-110-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-110-18" id="__codelineno-110-18" name="__codelineno-110-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-111-1" id="__codelineno-111-1" name="__codelineno-111-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-111-2" id="__codelineno-111-2" name="__codelineno-111-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">bubbleSort</span><span class="p">(</span><span class="nx">nums</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[])</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-111-3" id="__codelineno-111-3" name="__codelineno-111-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-111-4" id="__codelineno-111-4" name="__codelineno-111-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-111-5" id="__codelineno-111-5" name="__codelineno-111-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-111-6" id="__codelineno-111-6" name="__codelineno-111-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-111-7" id="__codelineno-111-7" name="__codelineno-111-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-111-8" id="__codelineno-111-8" name="__codelineno-111-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-111-9" id="__codelineno-111-9" name="__codelineno-111-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-111-10" id="__codelineno-111-10" name="__codelineno-111-10"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-111-11" id="__codelineno-111-11" name="__codelineno-111-11"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-111-12" id="__codelineno-111-12" name="__codelineno-111-12"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-111-13" id="__codelineno-111-13" name="__codelineno-111-13"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-111-14" id="__codelineno-111-14" name="__codelineno-111-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-111-15" id="__codelineno-111-15" name="__codelineno-111-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-111-16" id="__codelineno-111-16" name="__codelineno-111-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-111-17" id="__codelineno-111-17" name="__codelineno-111-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-111-18" id="__codelineno-111-18" name="__codelineno-111-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-112-1" id="__codelineno-112-1" name="__codelineno-112-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-112-2" id="__codelineno-112-2" name="__codelineno-112-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">bubbleSort</span><span class="p">(</span><span class="n">List</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-112-3" id="__codelineno-112-3" name="__codelineno-112-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-112-4" id="__codelineno-112-4" name="__codelineno-112-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-112-5" id="__codelineno-112-5" name="__codelineno-112-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-112-6" id="__codelineno-112-6" name="__codelineno-112-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-112-7" id="__codelineno-112-7" name="__codelineno-112-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-112-8" id="__codelineno-112-8" name="__codelineno-112-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-112-9" id="__codelineno-112-9" name="__codelineno-112-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-112-10" id="__codelineno-112-10" name="__codelineno-112-10"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-112-11" id="__codelineno-112-11" name="__codelineno-112-11"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-112-12" id="__codelineno-112-12" name="__codelineno-112-12"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-112-13" id="__codelineno-112-13" name="__codelineno-112-13"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="m">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-112-14" id="__codelineno-112-14" name="__codelineno-112-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-112-15" id="__codelineno-112-15" name="__codelineno-112-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-112-16" id="__codelineno-112-16" name="__codelineno-112-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-112-17" id="__codelineno-112-17" name="__codelineno-112-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-112-18" id="__codelineno-112-18" name="__codelineno-112-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-113-1" id="__codelineno-113-1" name="__codelineno-113-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-113-2" id="__codelineno-113-2" name="__codelineno-113-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">bubble_sort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">mut</span><span class="w"> </span><span class="p">[</span><span class="kt">i32</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-113-3" id="__codelineno-113-3" name="__codelineno-113-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-113-4" id="__codelineno-113-4" name="__codelineno-113-4"></a>
|
||
<a href="#__codelineno-113-5" id="__codelineno-113-5" name="__codelineno-113-5"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-113-6" id="__codelineno-113-6" name="__codelineno-113-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="n">nums</span><span class="p">.</span><span class="n">len</span><span class="p">()).</span><span class="n">rev</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-113-7" id="__codelineno-113-7" name="__codelineno-113-7"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-113-8" id="__codelineno-113-8" name="__codelineno-113-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">i</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-113-9" id="__codelineno-113-9" name="__codelineno-113-9"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-113-10" id="__codelineno-113-10" name="__codelineno-113-10"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-113-11" id="__codelineno-113-11" name="__codelineno-113-11"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-113-12" id="__codelineno-113-12" name="__codelineno-113-12"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-113-13" id="__codelineno-113-13" name="__codelineno-113-13"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-113-14" id="__codelineno-113-14" name="__codelineno-113-14"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-113-15" id="__codelineno-113-15" name="__codelineno-113-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-113-16" id="__codelineno-113-16" name="__codelineno-113-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-113-17" id="__codelineno-113-17" name="__codelineno-113-17"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-113-18" id="__codelineno-113-18" name="__codelineno-113-18"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-113-19" id="__codelineno-113-19" name="__codelineno-113-19"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-114-1" id="__codelineno-114-1" name="__codelineno-114-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-114-2" id="__codelineno-114-2" name="__codelineno-114-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">bubbleSort</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-114-3" id="__codelineno-114-3" name="__codelineno-114-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-114-4" id="__codelineno-114-4" name="__codelineno-114-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-114-5" id="__codelineno-114-5" name="__codelineno-114-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-114-6" id="__codelineno-114-6" name="__codelineno-114-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-114-7" id="__codelineno-114-7" name="__codelineno-114-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-114-8" id="__codelineno-114-8" name="__codelineno-114-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-114-9" id="__codelineno-114-9" name="__codelineno-114-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-114-10" id="__codelineno-114-10" name="__codelineno-114-10"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-114-11" id="__codelineno-114-11" name="__codelineno-114-11"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||
<a href="#__codelineno-114-12" id="__codelineno-114-12" name="__codelineno-114-12"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
|
||
<a href="#__codelineno-114-13" id="__codelineno-114-13" name="__codelineno-114-13"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-114-14" id="__codelineno-114-14" name="__codelineno-114-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-114-15" id="__codelineno-114-15" name="__codelineno-114-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-114-16" id="__codelineno-114-16" name="__codelineno-114-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-114-17" id="__codelineno-114-17" name="__codelineno-114-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-114-18" id="__codelineno-114-18" name="__codelineno-114-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-115-1" id="__codelineno-115-1" name="__codelineno-115-1"></a><span class="cm">/* 平方階(泡沫排序) */</span>
|
||
<a href="#__codelineno-115-2" id="__codelineno-115-2" name="__codelineno-115-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">bubbleSort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="n">IntArray</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-115-3" id="__codelineno-115-3" name="__codelineno-115-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="c1">// 計數器</span>
|
||
<a href="#__codelineno-115-4" id="__codelineno-115-4" name="__codelineno-115-4"></a><span class="w"> </span><span class="c1">// 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-115-5" id="__codelineno-115-5" name="__codelineno-115-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="n">downTo</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-115-6" id="__codelineno-115-6" name="__codelineno-115-6"></a><span class="w"> </span><span class="c1">// 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-115-7" id="__codelineno-115-7" name="__codelineno-115-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-115-8" id="__codelineno-115-8" name="__codelineno-115-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="o">]</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-115-9" id="__codelineno-115-9" name="__codelineno-115-9"></a><span class="w"> </span><span class="c1">// 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-115-10" id="__codelineno-115-10" name="__codelineno-115-10"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span>
|
||
<a href="#__codelineno-115-11" id="__codelineno-115-11" name="__codelineno-115-11"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="o">]</span>
|
||
<a href="#__codelineno-115-12" id="__codelineno-115-12" name="__codelineno-115-12"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span>
|
||
<a href="#__codelineno-115-13" id="__codelineno-115-13" name="__codelineno-115-13"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="c1">// 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-115-14" id="__codelineno-115-14" name="__codelineno-115-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-115-15" id="__codelineno-115-15" name="__codelineno-115-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-115-16" id="__codelineno-115-16" name="__codelineno-115-16"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-115-17" id="__codelineno-115-17" name="__codelineno-115-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-115-18" id="__codelineno-115-18" name="__codelineno-115-18"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-116-1" id="__codelineno-116-1" name="__codelineno-116-1"></a><span class="c1">### 平方階(泡沫排序)###</span>
|
||
<a href="#__codelineno-116-2" id="__codelineno-116-2" name="__codelineno-116-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">bubble_sort</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
|
||
<a href="#__codelineno-116-3" id="__codelineno-116-3" name="__codelineno-116-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1"># 計數器</span>
|
||
<a href="#__codelineno-116-4" id="__codelineno-116-4" name="__codelineno-116-4"></a>
|
||
<a href="#__codelineno-116-5" id="__codelineno-116-5" name="__codelineno-116-5"></a><span class="w"> </span><span class="c1"># 外迴圈:未排序區間為 [0, i]</span>
|
||
<a href="#__codelineno-116-6" id="__codelineno-116-6" name="__codelineno-116-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="o">.</span><span class="n">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">downto</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-116-7" id="__codelineno-116-7" name="__codelineno-116-7"></a><span class="w"> </span><span class="c1"># 內迴圈:將未排序區間 [0, i] 中的最大元素交換至該區間的最右端</span>
|
||
<a href="#__codelineno-116-8" id="__codelineno-116-8" name="__codelineno-116-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">...</span><span class="n">i</span>
|
||
<a href="#__codelineno-116-9" id="__codelineno-116-9" name="__codelineno-116-9"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span>
|
||
<a href="#__codelineno-116-10" id="__codelineno-116-10" name="__codelineno-116-10"></a><span class="w"> </span><span class="c1"># 交換 nums[j] 與 nums[j + 1]</span>
|
||
<a href="#__codelineno-116-11" id="__codelineno-116-11" name="__codelineno-116-11"></a><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span>
|
||
<a href="#__codelineno-116-12" id="__codelineno-116-12" name="__codelineno-116-12"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span>
|
||
<a href="#__codelineno-116-13" id="__codelineno-116-13" name="__codelineno-116-13"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span>
|
||
<a href="#__codelineno-116-14" id="__codelineno-116-14" name="__codelineno-116-14"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="c1"># 元素交換包含 3 個單元操作</span>
|
||
<a href="#__codelineno-116-15" id="__codelineno-116-15" name="__codelineno-116-15"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-116-16" id="__codelineno-116-16" name="__codelineno-116-16"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-116-17" id="__codelineno-116-17" name="__codelineno-116-17"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-116-18" id="__codelineno-116-18" name="__codelineno-116-18"></a>
|
||
<a href="#__codelineno-116-19" id="__codelineno-116-19" name="__codelineno-116-19"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-116-20" id="__codelineno-116-20" name="__codelineno-116-20"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 549px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20bubble_sort%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B9%B3%E6%96%B9%E9%9A%8E%EF%BC%88%E6%B3%A1%E6%B2%AB%E6%8E%92%E5%BA%8F%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%20%20%23%20%E8%A8%88%E6%95%B8%E5%99%A8%0A%20%20%20%20%23%20%E5%A4%96%E8%BF%B4%E5%9C%88%EF%BC%9A%E6%9C%AA%E6%8E%92%E5%BA%8F%E5%8D%80%E9%96%93%E7%82%BA%20%5B0%2C%20i%5D%0A%20%20%20%20for%20i%20in%20range%28len%28nums%29%20-%201%2C%200%2C%20-1%29%3A%0A%20%20%20%20%20%20%20%20%23%20%E5%85%A7%E8%BF%B4%E5%9C%88%EF%BC%9A%E5%B0%87%E6%9C%AA%E6%8E%92%E5%BA%8F%E5%8D%80%E9%96%93%20%5B0%2C%20i%5D%20%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0%E4%BA%A4%E6%8F%9B%E8%87%B3%E8%A9%B2%E5%8D%80%E9%96%93%E7%9A%84%E6%9C%80%E5%8F%B3%E7%AB%AF%0A%20%20%20%20%20%20%20%20for%20j%20in%20range%28i%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20nums%5Bj%5D%20%3E%20nums%5Bj%20%2B%201%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E4%BA%A4%E6%8F%9B%20nums%5Bj%5D%20%E8%88%87%20nums%5Bj%20%2B%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tmp%20%3D%20nums%5Bj%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nums%5Bj%5D%20%3D%20nums%5Bj%20%2B%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nums%5Bj%20%2B%201%5D%20%3D%20tmp%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%203%20%20%23%20%E5%85%83%E7%B4%A0%E4%BA%A4%E6%8F%9B%E5%8C%85%E5%90%AB%203%20%E5%80%8B%E5%96%AE%E5%85%83%E6%93%8D%E4%BD%9C%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20nums%20%3D%20%5Bi%20for%20i%20in%20range%28n%2C%200%2C%20-1%29%5D%20%20%23%20%5Bn%2C%20n-1%2C%20...%2C%202%2C%201%5D%0A%20%20%20%20count%20%3D%20bubble_sort%28nums%29%0A%20%20%20%20print%28%22%E5%B9%B3%E6%96%B9%E9%9A%8E%EF%BC%88%E6%B3%A1%E6%B2%AB%E6%8E%92%E5%BA%8F%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20bubble_sort%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B9%B3%E6%96%B9%E9%9A%8E%EF%BC%88%E6%B3%A1%E6%B2%AB%E6%8E%92%E5%BA%8F%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%20%20%23%20%E8%A8%88%E6%95%B8%E5%99%A8%0A%20%20%20%20%23%20%E5%A4%96%E8%BF%B4%E5%9C%88%EF%BC%9A%E6%9C%AA%E6%8E%92%E5%BA%8F%E5%8D%80%E9%96%93%E7%82%BA%20%5B0%2C%20i%5D%0A%20%20%20%20for%20i%20in%20range%28len%28nums%29%20-%201%2C%200%2C%20-1%29%3A%0A%20%20%20%20%20%20%20%20%23%20%E5%85%A7%E8%BF%B4%E5%9C%88%EF%BC%9A%E5%B0%87%E6%9C%AA%E6%8E%92%E5%BA%8F%E5%8D%80%E9%96%93%20%5B0%2C%20i%5D%20%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0%E4%BA%A4%E6%8F%9B%E8%87%B3%E8%A9%B2%E5%8D%80%E9%96%93%E7%9A%84%E6%9C%80%E5%8F%B3%E7%AB%AF%0A%20%20%20%20%20%20%20%20for%20j%20in%20range%28i%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20nums%5Bj%5D%20%3E%20nums%5Bj%20%2B%201%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E4%BA%A4%E6%8F%9B%20nums%5Bj%5D%20%E8%88%87%20nums%5Bj%20%2B%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tmp%20%3D%20nums%5Bj%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nums%5Bj%5D%20%3D%20nums%5Bj%20%2B%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nums%5Bj%20%2B%201%5D%20%3D%20tmp%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%203%20%20%23%20%E5%85%83%E7%B4%A0%E4%BA%A4%E6%8F%9B%E5%8C%85%E5%90%AB%203%20%E5%80%8B%E5%96%AE%E5%85%83%E6%93%8D%E4%BD%9C%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20nums%20%3D%20%5Bi%20for%20i%20in%20range%28n%2C%200%2C%20-1%29%5D%20%20%23%20%5Bn%2C%20n-1%2C%20...%2C%202%2C%201%5D%0A%20%20%20%20count%20%3D%20bubble_sort%28nums%29%0A%20%20%20%20print%28%22%E5%B9%B3%E6%96%B9%E9%9A%8E%EF%BC%88%E6%B3%A1%E6%B2%AB%E6%8E%92%E5%BA%8F%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<h3 id="4-o2n">4. 指數階 <span class="arithmatex">\(O(2^n)\)</span><a class="headerlink" href="#4-o2n" title="Permanent link">¶</a></h3>
|
||
<p>生物學的“細胞分裂”是指數階增長的典型例子:初始狀態為 <span class="arithmatex">\(1\)</span> 個細胞,分裂一輪後變為 <span class="arithmatex">\(2\)</span> 個,分裂兩輪後變為 <span class="arithmatex">\(4\)</span> 個,以此類推,分裂 <span class="arithmatex">\(n\)</span> 輪後有 <span class="arithmatex">\(2^n\)</span> 個細胞。</p>
|
||
<p>圖 2-11 和以下程式碼模擬了細胞分裂的過程,時間複雜度為 <span class="arithmatex">\(O(2^n)\)</span> 。請注意,輸入 <span class="arithmatex">\(n\)</span> 表示分裂輪數,返回值 <code>count</code> 表示總分裂次數。</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="10:13"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio"/><input id="__tabbed_10_2" name="__tabbed_10" type="radio"/><input id="__tabbed_10_3" name="__tabbed_10" type="radio"/><input id="__tabbed_10_4" name="__tabbed_10" type="radio"/><input id="__tabbed_10_5" name="__tabbed_10" type="radio"/><input id="__tabbed_10_6" name="__tabbed_10" type="radio"/><input id="__tabbed_10_7" name="__tabbed_10" type="radio"/><input id="__tabbed_10_8" name="__tabbed_10" type="radio"/><input id="__tabbed_10_9" name="__tabbed_10" type="radio"/><input id="__tabbed_10_10" name="__tabbed_10" type="radio"/><input id="__tabbed_10_11" name="__tabbed_10" type="radio"/><input id="__tabbed_10_12" name="__tabbed_10" type="radio"/><input id="__tabbed_10_13" name="__tabbed_10" type="radio"/><div class="tabbed-labels"><label for="__tabbed_10_1">Python</label><label for="__tabbed_10_2">C++</label><label for="__tabbed_10_3">Java</label><label for="__tabbed_10_4">C#</label><label for="__tabbed_10_5">Go</label><label for="__tabbed_10_6">Swift</label><label for="__tabbed_10_7">JS</label><label for="__tabbed_10_8">TS</label><label for="__tabbed_10_9">Dart</label><label for="__tabbed_10_10">Rust</label><label for="__tabbed_10_11">C</label><label for="__tabbed_10_12">Kotlin</label><label for="__tabbed_10_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-117-1" id="__codelineno-117-1" name="__codelineno-117-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-117-2" id="__codelineno-117-2" name="__codelineno-117-2"></a><span class="w"> </span><span class="sd">"""指數階(迴圈實現)"""</span>
|
||
<a href="#__codelineno-117-3" id="__codelineno-117-3" name="__codelineno-117-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-117-4" id="__codelineno-117-4" name="__codelineno-117-4"></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-117-5" id="__codelineno-117-5" name="__codelineno-117-5"></a> <span class="c1"># 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-117-6" id="__codelineno-117-6" name="__codelineno-117-6"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-117-7" id="__codelineno-117-7" name="__codelineno-117-7"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">base</span><span class="p">):</span>
|
||
<a href="#__codelineno-117-8" id="__codelineno-117-8" name="__codelineno-117-8"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-117-9" id="__codelineno-117-9" name="__codelineno-117-9"></a> <span class="n">base</span> <span class="o">*=</span> <span class="mi">2</span>
|
||
<a href="#__codelineno-117-10" id="__codelineno-117-10" name="__codelineno-117-10"></a> <span class="c1"># count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-117-11" id="__codelineno-117-11" name="__codelineno-117-11"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-118-1" id="__codelineno-118-1" name="__codelineno-118-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-118-2" id="__codelineno-118-2" name="__codelineno-118-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-118-3" id="__codelineno-118-3" name="__codelineno-118-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-118-4" id="__codelineno-118-4" name="__codelineno-118-4"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-118-5" id="__codelineno-118-5" name="__codelineno-118-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-118-6" id="__codelineno-118-6" name="__codelineno-118-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">base</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-118-7" id="__codelineno-118-7" name="__codelineno-118-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-118-8" id="__codelineno-118-8" name="__codelineno-118-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-118-9" id="__codelineno-118-9" name="__codelineno-118-9"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-118-10" id="__codelineno-118-10" name="__codelineno-118-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-118-11" id="__codelineno-118-11" name="__codelineno-118-11"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-118-12" id="__codelineno-118-12" name="__codelineno-118-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-118-13" id="__codelineno-118-13" name="__codelineno-118-13"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-119-1" id="__codelineno-119-1" name="__codelineno-119-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-119-2" id="__codelineno-119-2" name="__codelineno-119-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-119-3" id="__codelineno-119-3" name="__codelineno-119-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-119-4" id="__codelineno-119-4" name="__codelineno-119-4"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-119-5" id="__codelineno-119-5" name="__codelineno-119-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-119-6" id="__codelineno-119-6" name="__codelineno-119-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">base</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-119-7" id="__codelineno-119-7" name="__codelineno-119-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-119-8" id="__codelineno-119-8" name="__codelineno-119-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-119-9" id="__codelineno-119-9" name="__codelineno-119-9"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-119-10" id="__codelineno-119-10" name="__codelineno-119-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-119-11" id="__codelineno-119-11" name="__codelineno-119-11"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-119-12" id="__codelineno-119-12" name="__codelineno-119-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-119-13" id="__codelineno-119-13" name="__codelineno-119-13"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-120-1" id="__codelineno-120-1" name="__codelineno-120-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-120-2" id="__codelineno-120-2" name="__codelineno-120-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">Exponential</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-120-3" id="__codelineno-120-3" name="__codelineno-120-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">bas</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-120-4" id="__codelineno-120-4" name="__codelineno-120-4"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-120-5" id="__codelineno-120-5" name="__codelineno-120-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-120-6" id="__codelineno-120-6" name="__codelineno-120-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">bas</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-120-7" id="__codelineno-120-7" name="__codelineno-120-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-120-8" id="__codelineno-120-8" name="__codelineno-120-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-120-9" id="__codelineno-120-9" name="__codelineno-120-9"></a><span class="w"> </span><span class="n">bas</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-120-10" id="__codelineno-120-10" name="__codelineno-120-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-120-11" id="__codelineno-120-11" name="__codelineno-120-11"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-120-12" id="__codelineno-120-12" name="__codelineno-120-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-120-13" id="__codelineno-120-13" name="__codelineno-120-13"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-121-1" id="__codelineno-121-1" name="__codelineno-121-1"></a><span class="cm">/* 指數階(迴圈實現)*/</span>
|
||
<a href="#__codelineno-121-2" id="__codelineno-121-2" name="__codelineno-121-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">exponential</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-121-3" id="__codelineno-121-3" name="__codelineno-121-3"></a><span class="w"> </span><span class="nx">count</span><span class="p">,</span><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-121-4" id="__codelineno-121-4" name="__codelineno-121-4"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-121-5" id="__codelineno-121-5" name="__codelineno-121-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-121-6" id="__codelineno-121-6" name="__codelineno-121-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">base</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-121-7" id="__codelineno-121-7" name="__codelineno-121-7"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-121-8" id="__codelineno-121-8" name="__codelineno-121-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-121-9" id="__codelineno-121-9" name="__codelineno-121-9"></a><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-121-10" id="__codelineno-121-10" name="__codelineno-121-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-121-11" id="__codelineno-121-11" name="__codelineno-121-11"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-121-12" id="__codelineno-121-12" name="__codelineno-121-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-121-13" id="__codelineno-121-13" name="__codelineno-121-13"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-122-1" id="__codelineno-122-1" name="__codelineno-122-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-122-2" id="__codelineno-122-2" name="__codelineno-122-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-122-3" id="__codelineno-122-3" name="__codelineno-122-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-122-4" id="__codelineno-122-4" name="__codelineno-122-4"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">base</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-122-5" id="__codelineno-122-5" name="__codelineno-122-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-122-6" id="__codelineno-122-6" name="__codelineno-122-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-122-7" id="__codelineno-122-7" name="__codelineno-122-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-122-8" id="__codelineno-122-8" name="__codelineno-122-8"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-122-9" id="__codelineno-122-9" name="__codelineno-122-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-122-10" id="__codelineno-122-10" name="__codelineno-122-10"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-122-11" id="__codelineno-122-11" name="__codelineno-122-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-122-12" id="__codelineno-122-12" name="__codelineno-122-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-122-13" id="__codelineno-122-13" name="__codelineno-122-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-122-14" id="__codelineno-122-14" name="__codelineno-122-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-123-1" id="__codelineno-123-1" name="__codelineno-123-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-123-2" id="__codelineno-123-2" name="__codelineno-123-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">exponential</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-123-3" id="__codelineno-123-3" name="__codelineno-123-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
|
||
<a href="#__codelineno-123-4" id="__codelineno-123-4" name="__codelineno-123-4"></a><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-123-5" id="__codelineno-123-5" name="__codelineno-123-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-123-6" id="__codelineno-123-6" name="__codelineno-123-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-123-7" id="__codelineno-123-7" name="__codelineno-123-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">base</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-123-8" id="__codelineno-123-8" name="__codelineno-123-8"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-123-9" id="__codelineno-123-9" name="__codelineno-123-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-123-10" id="__codelineno-123-10" name="__codelineno-123-10"></a><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-123-11" id="__codelineno-123-11" name="__codelineno-123-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-123-12" id="__codelineno-123-12" name="__codelineno-123-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-123-13" id="__codelineno-123-13" name="__codelineno-123-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-123-14" id="__codelineno-123-14" name="__codelineno-123-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-124-1" id="__codelineno-124-1" name="__codelineno-124-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-124-2" id="__codelineno-124-2" name="__codelineno-124-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">exponential</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-124-3" id="__codelineno-124-3" name="__codelineno-124-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
|
||
<a href="#__codelineno-124-4" id="__codelineno-124-4" name="__codelineno-124-4"></a><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-124-5" id="__codelineno-124-5" name="__codelineno-124-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-124-6" id="__codelineno-124-6" name="__codelineno-124-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-124-7" id="__codelineno-124-7" name="__codelineno-124-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">base</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-124-8" id="__codelineno-124-8" name="__codelineno-124-8"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-124-9" id="__codelineno-124-9" name="__codelineno-124-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-124-10" id="__codelineno-124-10" name="__codelineno-124-10"></a><span class="w"> </span><span class="nx">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-124-11" id="__codelineno-124-11" name="__codelineno-124-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-124-12" id="__codelineno-124-12" name="__codelineno-124-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-124-13" id="__codelineno-124-13" name="__codelineno-124-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-124-14" id="__codelineno-124-14" name="__codelineno-124-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-125-1" id="__codelineno-125-1" name="__codelineno-125-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-125-2" id="__codelineno-125-2" name="__codelineno-125-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">exponential</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-125-3" id="__codelineno-125-3" name="__codelineno-125-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-125-4" id="__codelineno-125-4" name="__codelineno-125-4"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-125-5" id="__codelineno-125-5" name="__codelineno-125-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-125-6" id="__codelineno-125-6" name="__codelineno-125-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">base</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-125-7" id="__codelineno-125-7" name="__codelineno-125-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-125-8" id="__codelineno-125-8" name="__codelineno-125-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-125-9" id="__codelineno-125-9" name="__codelineno-125-9"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="m">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-125-10" id="__codelineno-125-10" name="__codelineno-125-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-125-11" id="__codelineno-125-11" name="__codelineno-125-11"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-125-12" id="__codelineno-125-12" name="__codelineno-125-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-125-13" id="__codelineno-125-13" name="__codelineno-125-13"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-126-1" id="__codelineno-126-1" name="__codelineno-126-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-126-2" id="__codelineno-126-2" name="__codelineno-126-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-126-3" id="__codelineno-126-3" name="__codelineno-126-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-126-4" id="__codelineno-126-4" name="__codelineno-126-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-126-5" id="__codelineno-126-5" name="__codelineno-126-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-126-6" id="__codelineno-126-6" name="__codelineno-126-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-126-7" id="__codelineno-126-7" name="__codelineno-126-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">base</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-126-8" id="__codelineno-126-8" name="__codelineno-126-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-126-9" id="__codelineno-126-9" name="__codelineno-126-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-126-10" id="__codelineno-126-10" name="__codelineno-126-10"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-126-11" id="__codelineno-126-11" name="__codelineno-126-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-126-12" id="__codelineno-126-12" name="__codelineno-126-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-126-13" id="__codelineno-126-13" name="__codelineno-126-13"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-126-14" id="__codelineno-126-14" name="__codelineno-126-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-127-1" id="__codelineno-127-1" name="__codelineno-127-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-127-2" id="__codelineno-127-2" name="__codelineno-127-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-127-3" id="__codelineno-127-3" name="__codelineno-127-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-127-4" id="__codelineno-127-4" name="__codelineno-127-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">bas</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-127-5" id="__codelineno-127-5" name="__codelineno-127-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-127-6" id="__codelineno-127-6" name="__codelineno-127-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-127-7" id="__codelineno-127-7" name="__codelineno-127-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">bas</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-127-8" id="__codelineno-127-8" name="__codelineno-127-8"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-127-9" id="__codelineno-127-9" name="__codelineno-127-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-127-10" id="__codelineno-127-10" name="__codelineno-127-10"></a><span class="w"> </span><span class="n">bas</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-127-11" id="__codelineno-127-11" name="__codelineno-127-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-127-12" id="__codelineno-127-12" name="__codelineno-127-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-127-13" id="__codelineno-127-13" name="__codelineno-127-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-127-14" id="__codelineno-127-14" name="__codelineno-127-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-128-1" id="__codelineno-128-1" name="__codelineno-128-1"></a><span class="cm">/* 指數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-128-2" id="__codelineno-128-2" name="__codelineno-128-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-128-3" id="__codelineno-128-3" name="__codelineno-128-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-128-4" id="__codelineno-128-4" name="__codelineno-128-4"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-128-5" id="__codelineno-128-5" name="__codelineno-128-5"></a><span class="w"> </span><span class="c1">// 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-128-6" id="__codelineno-128-6" name="__codelineno-128-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-128-7" id="__codelineno-128-7" name="__codelineno-128-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">base</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-128-8" id="__codelineno-128-8" name="__codelineno-128-8"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-128-9" id="__codelineno-128-9" name="__codelineno-128-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-128-10" id="__codelineno-128-10" name="__codelineno-128-10"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="m">2</span>
|
||
<a href="#__codelineno-128-11" id="__codelineno-128-11" name="__codelineno-128-11"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-128-12" id="__codelineno-128-12" name="__codelineno-128-12"></a><span class="w"> </span><span class="c1">// count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-128-13" id="__codelineno-128-13" name="__codelineno-128-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-128-14" id="__codelineno-128-14" name="__codelineno-128-14"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-129-1" id="__codelineno-129-1" name="__codelineno-129-1"></a><span class="c1">### 指數階(迴圈實現)###</span>
|
||
<a href="#__codelineno-129-2" id="__codelineno-129-2" name="__codelineno-129-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">exponential</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-129-3" id="__codelineno-129-3" name="__codelineno-129-3"></a><span class="w"> </span><span class="n">count</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-129-4" id="__codelineno-129-4" name="__codelineno-129-4"></a>
|
||
<a href="#__codelineno-129-5" id="__codelineno-129-5" name="__codelineno-129-5"></a><span class="w"> </span><span class="c1"># 細胞每輪一分為二,形成數列 1, 2, 4, 8, ..., 2^(n-1)</span>
|
||
<a href="#__codelineno-129-6" id="__codelineno-129-6" name="__codelineno-129-6"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span>
|
||
<a href="#__codelineno-129-7" id="__codelineno-129-7" name="__codelineno-129-7"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">base</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-129-8" id="__codelineno-129-8" name="__codelineno-129-8"></a><span class="w"> </span><span class="n">base</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-129-9" id="__codelineno-129-9" name="__codelineno-129-9"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-129-10" id="__codelineno-129-10" name="__codelineno-129-10"></a>
|
||
<a href="#__codelineno-129-11" id="__codelineno-129-11" name="__codelineno-129-11"></a><span class="w"> </span><span class="c1"># count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1</span>
|
||
<a href="#__codelineno-129-12" id="__codelineno-129-12" name="__codelineno-129-12"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-129-13" id="__codelineno-129-13" name="__codelineno-129-13"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 531px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20exponential%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20base%20%3D%201%0A%20%20%20%20%23%20%E7%B4%B0%E8%83%9E%E6%AF%8F%E8%BC%AA%E4%B8%80%E5%88%86%E7%82%BA%E4%BA%8C%EF%BC%8C%E5%BD%A2%E6%88%90%E6%95%B8%E5%88%97%201%2C%202%2C%204%2C%208%2C%20...%2C%202%5E%28n-1%29%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20for%20_%20in%20range%28base%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20%20%20%20%20base%20%2A%3D%202%0A%20%20%20%20%23%20count%20%3D%201%20%2B%202%20%2B%204%20%2B%208%20%2B%20..%20%2B%202%5E%28n-1%29%20%3D%202%5En%20-%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20exponential%28n%29%0A%20%20%20%20print%28%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20exponential%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20base%20%3D%201%0A%20%20%20%20%23%20%E7%B4%B0%E8%83%9E%E6%AF%8F%E8%BC%AA%E4%B8%80%E5%88%86%E7%82%BA%E4%BA%8C%EF%BC%8C%E5%BD%A2%E6%88%90%E6%95%B8%E5%88%97%201%2C%202%2C%204%2C%208%2C%20...%2C%202%5E%28n-1%29%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20for%20_%20in%20range%28base%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20%20%20%20%20base%20%2A%3D%202%0A%20%20%20%20%23%20count%20%3D%201%20%2B%202%20%2B%204%20%2B%208%20%2B%20..%20%2B%202%5E%28n-1%29%20%3D%202%5En%20-%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20exponential%28n%29%0A%20%20%20%20print%28%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_exponential.png" data-dark-src="/assets/figure-svg/figures/887a015d0592895f3ccd9439.json" data-src="/assets/figure-svg/figures/7e74c58c81c3a573234bb7fe.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_exponential.svg" data-theme="light" tabindex="-1" type="image/svg+xml">指數階的時間複雜度</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_exponential.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">指數階的時間複雜度</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-11 指數階的時間複雜度 </p>
|
||
<p>在實際演算法中,指數階常出現於遞迴函式中。例如在以下程式碼中,其遞迴地一分為二,經過 <span class="arithmatex">\(n\)</span> 次分裂後停止:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="11:13"><input checked="checked" id="__tabbed_11_1" name="__tabbed_11" type="radio"/><input id="__tabbed_11_2" name="__tabbed_11" type="radio"/><input id="__tabbed_11_3" name="__tabbed_11" type="radio"/><input id="__tabbed_11_4" name="__tabbed_11" type="radio"/><input id="__tabbed_11_5" name="__tabbed_11" type="radio"/><input id="__tabbed_11_6" name="__tabbed_11" type="radio"/><input id="__tabbed_11_7" name="__tabbed_11" type="radio"/><input id="__tabbed_11_8" name="__tabbed_11" type="radio"/><input id="__tabbed_11_9" name="__tabbed_11" type="radio"/><input id="__tabbed_11_10" name="__tabbed_11" type="radio"/><input id="__tabbed_11_11" name="__tabbed_11" type="radio"/><input id="__tabbed_11_12" name="__tabbed_11" type="radio"/><input id="__tabbed_11_13" name="__tabbed_11" type="radio"/><div class="tabbed-labels"><label for="__tabbed_11_1">Python</label><label for="__tabbed_11_2">C++</label><label for="__tabbed_11_3">Java</label><label for="__tabbed_11_4">C#</label><label for="__tabbed_11_5">Go</label><label for="__tabbed_11_6">Swift</label><label for="__tabbed_11_7">JS</label><label for="__tabbed_11_8">TS</label><label for="__tabbed_11_9">Dart</label><label for="__tabbed_11_10">Rust</label><label for="__tabbed_11_11">C</label><label for="__tabbed_11_12">Kotlin</label><label for="__tabbed_11_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-130-1" id="__codelineno-130-1" name="__codelineno-130-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-130-2" id="__codelineno-130-2" name="__codelineno-130-2"></a><span class="w"> </span><span class="sd">"""指數階(遞迴實現)"""</span>
|
||
<a href="#__codelineno-130-3" id="__codelineno-130-3" name="__codelineno-130-3"></a> <span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||
<a href="#__codelineno-130-4" id="__codelineno-130-4" name="__codelineno-130-4"></a> <span class="k">return</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-130-5" id="__codelineno-130-5" name="__codelineno-130-5"></a> <span class="k">return</span> <span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-131-1" id="__codelineno-131-1" name="__codelineno-131-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-131-2" id="__codelineno-131-2" name="__codelineno-131-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">expRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-131-3" id="__codelineno-131-3" name="__codelineno-131-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-131-4" id="__codelineno-131-4" name="__codelineno-131-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-131-5" id="__codelineno-131-5" name="__codelineno-131-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-131-6" id="__codelineno-131-6" name="__codelineno-131-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-132-1" id="__codelineno-132-1" name="__codelineno-132-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-132-2" id="__codelineno-132-2" name="__codelineno-132-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">expRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-132-3" id="__codelineno-132-3" name="__codelineno-132-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-132-4" id="__codelineno-132-4" name="__codelineno-132-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-132-5" id="__codelineno-132-5" name="__codelineno-132-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-132-6" id="__codelineno-132-6" name="__codelineno-132-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-133-1" id="__codelineno-133-1" name="__codelineno-133-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-133-2" id="__codelineno-133-2" name="__codelineno-133-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">ExpRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-133-3" id="__codelineno-133-3" name="__codelineno-133-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-133-4" id="__codelineno-133-4" name="__codelineno-133-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nf">ExpRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">ExpRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-133-5" id="__codelineno-133-5" name="__codelineno-133-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-134-1" id="__codelineno-134-1" name="__codelineno-134-1"></a><span class="cm">/* 指數階(遞迴實現)*/</span>
|
||
<a href="#__codelineno-134-2" id="__codelineno-134-2" name="__codelineno-134-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-134-3" id="__codelineno-134-3" name="__codelineno-134-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-134-4" id="__codelineno-134-4" name="__codelineno-134-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-134-5" id="__codelineno-134-5" name="__codelineno-134-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-134-6" id="__codelineno-134-6" name="__codelineno-134-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-134-7" id="__codelineno-134-7" name="__codelineno-134-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-135-1" id="__codelineno-135-1" name="__codelineno-135-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-135-2" id="__codelineno-135-2" name="__codelineno-135-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">expRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-135-3" id="__codelineno-135-3" name="__codelineno-135-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-135-4" id="__codelineno-135-4" name="__codelineno-135-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-135-5" id="__codelineno-135-5" name="__codelineno-135-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-135-6" id="__codelineno-135-6" name="__codelineno-135-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-135-7" id="__codelineno-135-7" name="__codelineno-135-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-136-1" id="__codelineno-136-1" name="__codelineno-136-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-136-2" id="__codelineno-136-2" name="__codelineno-136-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-136-3" id="__codelineno-136-3" name="__codelineno-136-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-136-4" id="__codelineno-136-4" name="__codelineno-136-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-136-5" id="__codelineno-136-5" name="__codelineno-136-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-137-1" id="__codelineno-137-1" name="__codelineno-137-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-137-2" id="__codelineno-137-2" name="__codelineno-137-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-137-3" id="__codelineno-137-3" name="__codelineno-137-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-137-4" id="__codelineno-137-4" name="__codelineno-137-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">expRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-137-5" id="__codelineno-137-5" name="__codelineno-137-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-138-1" id="__codelineno-138-1" name="__codelineno-138-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-138-2" id="__codelineno-138-2" name="__codelineno-138-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-138-3" id="__codelineno-138-3" name="__codelineno-138-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-138-4" id="__codelineno-138-4" name="__codelineno-138-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-138-5" id="__codelineno-138-5" name="__codelineno-138-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-139-1" id="__codelineno-139-1" name="__codelineno-139-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-139-2" id="__codelineno-139-2" name="__codelineno-139-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-139-3" id="__codelineno-139-3" name="__codelineno-139-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-139-4" id="__codelineno-139-4" name="__codelineno-139-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-139-5" id="__codelineno-139-5" name="__codelineno-139-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-139-6" id="__codelineno-139-6" name="__codelineno-139-6"></a><span class="w"> </span><span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-139-7" id="__codelineno-139-7" name="__codelineno-139-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-140-1" id="__codelineno-140-1" name="__codelineno-140-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-140-2" id="__codelineno-140-2" name="__codelineno-140-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">expRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-140-3" id="__codelineno-140-3" name="__codelineno-140-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-140-4" id="__codelineno-140-4" name="__codelineno-140-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-140-5" id="__codelineno-140-5" name="__codelineno-140-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-140-6" id="__codelineno-140-6" name="__codelineno-140-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-141-1" id="__codelineno-141-1" name="__codelineno-141-1"></a><span class="cm">/* 指數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-141-2" id="__codelineno-141-2" name="__codelineno-141-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">expRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-141-3" id="__codelineno-141-3" name="__codelineno-141-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-141-4" id="__codelineno-141-4" name="__codelineno-141-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-141-5" id="__codelineno-141-5" name="__codelineno-141-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-141-6" id="__codelineno-141-6" name="__codelineno-141-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">expRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-141-7" id="__codelineno-141-7" name="__codelineno-141-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-142-1" id="__codelineno-142-1" name="__codelineno-142-1"></a><span class="c1">### 指數階(遞迴實現)###</span>
|
||
<a href="#__codelineno-142-2" id="__codelineno-142-2" name="__codelineno-142-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-142-3" id="__codelineno-142-3" name="__codelineno-142-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-142-4" id="__codelineno-142-4" name="__codelineno-142-4"></a><span class="w"> </span><span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">exp_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-142-5" id="__codelineno-142-5" name="__codelineno-142-5"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 423px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20exp_recur%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20return%20exp_recur%28n%20-%201%29%20%2B%20exp_recur%28n%20-%201%29%20%2B%201%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%207%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20exp_recur%28n%29%0A%20%20%20%20print%28%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20exp_recur%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20return%20exp_recur%28n%20-%201%29%20%2B%20exp_recur%28n%20-%201%29%20%2B%201%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%207%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20exp_recur%28n%29%0A%20%20%20%20print%28%22%E6%8C%87%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>指數階增長非常迅速,在窮舉法(暴力搜尋、回溯等)中比較常見。對於資料規模較大的問題,指數階是不可接受的,通常需要使用動態規劃或貪婪演算法等來解決。</p>
|
||
<h3 id="5-olog-n">5. 對數階 <span class="arithmatex">\(O(\log n)\)</span><a class="headerlink" href="#5-olog-n" title="Permanent link">¶</a></h3>
|
||
<p>與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 <span class="arithmatex">\(n\)</span> ,由於每輪縮減到一半,因此迴圈次數是 <span class="arithmatex">\(\log_2 n\)</span> ,即 <span class="arithmatex">\(2^n\)</span> 的反函式。</p>
|
||
<p>圖 2-12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 <span class="arithmatex">\(O(\log_2 n)\)</span> ,簡記為 <span class="arithmatex">\(O(\log n)\)</span> :</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="12:13"><input checked="checked" id="__tabbed_12_1" name="__tabbed_12" type="radio"/><input id="__tabbed_12_2" name="__tabbed_12" type="radio"/><input id="__tabbed_12_3" name="__tabbed_12" type="radio"/><input id="__tabbed_12_4" name="__tabbed_12" type="radio"/><input id="__tabbed_12_5" name="__tabbed_12" type="radio"/><input id="__tabbed_12_6" name="__tabbed_12" type="radio"/><input id="__tabbed_12_7" name="__tabbed_12" type="radio"/><input id="__tabbed_12_8" name="__tabbed_12" type="radio"/><input id="__tabbed_12_9" name="__tabbed_12" type="radio"/><input id="__tabbed_12_10" name="__tabbed_12" type="radio"/><input id="__tabbed_12_11" name="__tabbed_12" type="radio"/><input id="__tabbed_12_12" name="__tabbed_12" type="radio"/><input id="__tabbed_12_13" name="__tabbed_12" type="radio"/><div class="tabbed-labels"><label for="__tabbed_12_1">Python</label><label for="__tabbed_12_2">C++</label><label for="__tabbed_12_3">Java</label><label for="__tabbed_12_4">C#</label><label for="__tabbed_12_5">Go</label><label for="__tabbed_12_6">Swift</label><label for="__tabbed_12_7">JS</label><label for="__tabbed_12_8">TS</label><label for="__tabbed_12_9">Dart</label><label for="__tabbed_12_10">Rust</label><label for="__tabbed_12_11">C</label><label for="__tabbed_12_12">Kotlin</label><label for="__tabbed_12_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-143-1" id="__codelineno-143-1" name="__codelineno-143-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-143-2" id="__codelineno-143-2" name="__codelineno-143-2"></a><span class="w"> </span><span class="sd">"""對數階(迴圈實現)"""</span>
|
||
<a href="#__codelineno-143-3" id="__codelineno-143-3" name="__codelineno-143-3"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-143-4" id="__codelineno-143-4" name="__codelineno-143-4"></a> <span class="k">while</span> <span class="n">n</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||
<a href="#__codelineno-143-5" id="__codelineno-143-5" name="__codelineno-143-5"></a> <span class="n">n</span> <span class="o">=</span> <span class="n">n</span> <span class="o">/</span> <span class="mi">2</span>
|
||
<a href="#__codelineno-143-6" id="__codelineno-143-6" name="__codelineno-143-6"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-143-7" id="__codelineno-143-7" name="__codelineno-143-7"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-144-1" id="__codelineno-144-1" name="__codelineno-144-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-144-2" id="__codelineno-144-2" name="__codelineno-144-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-144-3" id="__codelineno-144-3" name="__codelineno-144-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-144-4" id="__codelineno-144-4" name="__codelineno-144-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-144-5" id="__codelineno-144-5" name="__codelineno-144-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-144-6" id="__codelineno-144-6" name="__codelineno-144-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-144-7" id="__codelineno-144-7" name="__codelineno-144-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-144-8" id="__codelineno-144-8" name="__codelineno-144-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-144-9" id="__codelineno-144-9" name="__codelineno-144-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-145-1" id="__codelineno-145-1" name="__codelineno-145-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-145-2" id="__codelineno-145-2" name="__codelineno-145-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-145-3" id="__codelineno-145-3" name="__codelineno-145-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-145-4" id="__codelineno-145-4" name="__codelineno-145-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-145-5" id="__codelineno-145-5" name="__codelineno-145-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-145-6" id="__codelineno-145-6" name="__codelineno-145-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-145-7" id="__codelineno-145-7" name="__codelineno-145-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-145-8" id="__codelineno-145-8" name="__codelineno-145-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-145-9" id="__codelineno-145-9" name="__codelineno-145-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-146-1" id="__codelineno-146-1" name="__codelineno-146-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-146-2" id="__codelineno-146-2" name="__codelineno-146-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">Logarithmic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-146-3" id="__codelineno-146-3" name="__codelineno-146-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-146-4" id="__codelineno-146-4" name="__codelineno-146-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-146-5" id="__codelineno-146-5" name="__codelineno-146-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-146-6" id="__codelineno-146-6" name="__codelineno-146-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-146-7" id="__codelineno-146-7" name="__codelineno-146-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-146-8" id="__codelineno-146-8" name="__codelineno-146-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-146-9" id="__codelineno-146-9" name="__codelineno-146-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-147-1" id="__codelineno-147-1" name="__codelineno-147-1"></a><span class="cm">/* 對數階(迴圈實現)*/</span>
|
||
<a href="#__codelineno-147-2" id="__codelineno-147-2" name="__codelineno-147-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">logarithmic</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-147-3" id="__codelineno-147-3" name="__codelineno-147-3"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-147-4" id="__codelineno-147-4" name="__codelineno-147-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-147-5" id="__codelineno-147-5" name="__codelineno-147-5"></a><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-147-6" id="__codelineno-147-6" name="__codelineno-147-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-147-7" id="__codelineno-147-7" name="__codelineno-147-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-147-8" id="__codelineno-147-8" name="__codelineno-147-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-147-9" id="__codelineno-147-9" name="__codelineno-147-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-148-1" id="__codelineno-148-1" name="__codelineno-148-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-148-2" id="__codelineno-148-2" name="__codelineno-148-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-148-3" id="__codelineno-148-3" name="__codelineno-148-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-148-4" id="__codelineno-148-4" name="__codelineno-148-4"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">n</span>
|
||
<a href="#__codelineno-148-5" id="__codelineno-148-5" name="__codelineno-148-5"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-148-6" id="__codelineno-148-6" name="__codelineno-148-6"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-148-7" id="__codelineno-148-7" name="__codelineno-148-7"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-148-8" id="__codelineno-148-8" name="__codelineno-148-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-148-9" id="__codelineno-148-9" name="__codelineno-148-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-148-10" id="__codelineno-148-10" name="__codelineno-148-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-149-1" id="__codelineno-149-1" name="__codelineno-149-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-149-2" id="__codelineno-149-2" name="__codelineno-149-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">logarithmic</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-149-3" id="__codelineno-149-3" name="__codelineno-149-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-149-4" id="__codelineno-149-4" name="__codelineno-149-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-149-5" id="__codelineno-149-5" name="__codelineno-149-5"></a><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-149-6" id="__codelineno-149-6" name="__codelineno-149-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-149-7" id="__codelineno-149-7" name="__codelineno-149-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-149-8" id="__codelineno-149-8" name="__codelineno-149-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-149-9" id="__codelineno-149-9" name="__codelineno-149-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-150-1" id="__codelineno-150-1" name="__codelineno-150-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-150-2" id="__codelineno-150-2" name="__codelineno-150-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">logarithmic</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-150-3" id="__codelineno-150-3" name="__codelineno-150-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-150-4" id="__codelineno-150-4" name="__codelineno-150-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-150-5" id="__codelineno-150-5" name="__codelineno-150-5"></a><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-150-6" id="__codelineno-150-6" name="__codelineno-150-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-150-7" id="__codelineno-150-7" name="__codelineno-150-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-150-8" id="__codelineno-150-8" name="__codelineno-150-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-150-9" id="__codelineno-150-9" name="__codelineno-150-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-151-1" id="__codelineno-151-1" name="__codelineno-151-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-151-2" id="__codelineno-151-2" name="__codelineno-151-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">logarithmic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-151-3" id="__codelineno-151-3" name="__codelineno-151-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-151-4" id="__codelineno-151-4" name="__codelineno-151-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-151-5" id="__codelineno-151-5" name="__codelineno-151-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">~/</span><span class="w"> </span><span class="m">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-151-6" id="__codelineno-151-6" name="__codelineno-151-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-151-7" id="__codelineno-151-7" name="__codelineno-151-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-151-8" id="__codelineno-151-8" name="__codelineno-151-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-151-9" id="__codelineno-151-9" name="__codelineno-151-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-152-1" id="__codelineno-152-1" name="__codelineno-152-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-152-2" id="__codelineno-152-2" name="__codelineno-152-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="k">mut</span><span class="w"> </span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-152-3" id="__codelineno-152-3" name="__codelineno-152-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-152-4" id="__codelineno-152-4" name="__codelineno-152-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-152-5" id="__codelineno-152-5" name="__codelineno-152-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-152-6" id="__codelineno-152-6" name="__codelineno-152-6"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-152-7" id="__codelineno-152-7" name="__codelineno-152-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-152-8" id="__codelineno-152-8" name="__codelineno-152-8"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-152-9" id="__codelineno-152-9" name="__codelineno-152-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-153-1" id="__codelineno-153-1" name="__codelineno-153-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-153-2" id="__codelineno-153-2" name="__codelineno-153-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-153-3" id="__codelineno-153-3" name="__codelineno-153-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-153-4" id="__codelineno-153-4" name="__codelineno-153-4"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-153-5" id="__codelineno-153-5" name="__codelineno-153-5"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||
<a href="#__codelineno-153-6" id="__codelineno-153-6" name="__codelineno-153-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-153-7" id="__codelineno-153-7" name="__codelineno-153-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-153-8" id="__codelineno-153-8" name="__codelineno-153-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-153-9" id="__codelineno-153-9" name="__codelineno-153-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-154-1" id="__codelineno-154-1" name="__codelineno-154-1"></a><span class="cm">/* 對數階(迴圈實現) */</span>
|
||
<a href="#__codelineno-154-2" id="__codelineno-154-2" name="__codelineno-154-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-154-3" id="__codelineno-154-3" name="__codelineno-154-3"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">n1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span>
|
||
<a href="#__codelineno-154-4" id="__codelineno-154-4" name="__codelineno-154-4"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-154-5" id="__codelineno-154-5" name="__codelineno-154-5"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n1</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-154-6" id="__codelineno-154-6" name="__codelineno-154-6"></a><span class="w"> </span><span class="n">n1</span><span class="w"> </span><span class="o">/=</span><span class="w"> </span><span class="m">2</span>
|
||
<a href="#__codelineno-154-7" id="__codelineno-154-7" name="__codelineno-154-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-154-8" id="__codelineno-154-8" name="__codelineno-154-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-154-9" id="__codelineno-154-9" name="__codelineno-154-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-154-10" id="__codelineno-154-10" name="__codelineno-154-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-155-1" id="__codelineno-155-1" name="__codelineno-155-1"></a><span class="c1">### 對數階(迴圈實現)###</span>
|
||
<a href="#__codelineno-155-2" id="__codelineno-155-2" name="__codelineno-155-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">logarithmic</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-155-3" id="__codelineno-155-3" name="__codelineno-155-3"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-155-4" id="__codelineno-155-4" name="__codelineno-155-4"></a>
|
||
<a href="#__codelineno-155-5" id="__codelineno-155-5" name="__codelineno-155-5"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-155-6" id="__codelineno-155-6" name="__codelineno-155-6"></a><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/=</span><span class="w"> </span><span class="mi">2</span>
|
||
<a href="#__codelineno-155-7" id="__codelineno-155-7" name="__codelineno-155-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-155-8" id="__codelineno-155-8" name="__codelineno-155-8"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-155-9" id="__codelineno-155-9" name="__codelineno-155-9"></a>
|
||
<a href="#__codelineno-155-10" id="__codelineno-155-10" name="__codelineno-155-10"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-155-11" id="__codelineno-155-11" name="__codelineno-155-11"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 459px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20logarithmic%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20while%20n%20%3E%201%3A%0A%20%20%20%20%20%20%20%20n%20%3D%20n%20/%202%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20logarithmic%28n%29%0A%20%20%20%20print%28%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20logarithmic%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20while%20n%20%3E%201%3A%0A%20%20%20%20%20%20%20%20n%20%3D%20n%20/%202%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20logarithmic%28n%29%0A%20%20%20%20print%28%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E8%BF%B4%E5%9C%88%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic.png" data-dark-src="/assets/figure-svg/figures/0e812a29b2c674b996d53440.json" data-src="/assets/figure-svg/figures/038f62c3e5865b44df502d16.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic.svg" data-theme="light" tabindex="-1" type="image/svg+xml">對數階的時間複雜度</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">對數階的時間複雜度</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-12 對數階的時間複雜度 </p>
|
||
<p>與指數階類似,對數階也常出現於遞迴函式中。以下程式碼形成了一棵高度為 <span class="arithmatex">\(\log_2 n\)</span> 的遞迴樹:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="13:13"><input checked="checked" id="__tabbed_13_1" name="__tabbed_13" type="radio"/><input id="__tabbed_13_2" name="__tabbed_13" type="radio"/><input id="__tabbed_13_3" name="__tabbed_13" type="radio"/><input id="__tabbed_13_4" name="__tabbed_13" type="radio"/><input id="__tabbed_13_5" name="__tabbed_13" type="radio"/><input id="__tabbed_13_6" name="__tabbed_13" type="radio"/><input id="__tabbed_13_7" name="__tabbed_13" type="radio"/><input id="__tabbed_13_8" name="__tabbed_13" type="radio"/><input id="__tabbed_13_9" name="__tabbed_13" type="radio"/><input id="__tabbed_13_10" name="__tabbed_13" type="radio"/><input id="__tabbed_13_11" name="__tabbed_13" type="radio"/><input id="__tabbed_13_12" name="__tabbed_13" type="radio"/><input id="__tabbed_13_13" name="__tabbed_13" type="radio"/><div class="tabbed-labels"><label for="__tabbed_13_1">Python</label><label for="__tabbed_13_2">C++</label><label for="__tabbed_13_3">Java</label><label for="__tabbed_13_4">C#</label><label for="__tabbed_13_5">Go</label><label for="__tabbed_13_6">Swift</label><label for="__tabbed_13_7">JS</label><label for="__tabbed_13_8">TS</label><label for="__tabbed_13_9">Dart</label><label for="__tabbed_13_10">Rust</label><label for="__tabbed_13_11">C</label><label for="__tabbed_13_12">Kotlin</label><label for="__tabbed_13_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-156-1" id="__codelineno-156-1" name="__codelineno-156-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-156-2" id="__codelineno-156-2" name="__codelineno-156-2"></a><span class="w"> </span><span class="sd">"""對數階(遞迴實現)"""</span>
|
||
<a href="#__codelineno-156-3" id="__codelineno-156-3" name="__codelineno-156-3"></a> <span class="k">if</span> <span class="n">n</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span>
|
||
<a href="#__codelineno-156-4" id="__codelineno-156-4" name="__codelineno-156-4"></a> <span class="k">return</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-156-5" id="__codelineno-156-5" name="__codelineno-156-5"></a> <span class="k">return</span> <span class="n">log_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-157-1" id="__codelineno-157-1" name="__codelineno-157-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-157-2" id="__codelineno-157-2" name="__codelineno-157-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-157-3" id="__codelineno-157-3" name="__codelineno-157-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-157-4" id="__codelineno-157-4" name="__codelineno-157-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-157-5" id="__codelineno-157-5" name="__codelineno-157-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-157-6" id="__codelineno-157-6" name="__codelineno-157-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-158-1" id="__codelineno-158-1" name="__codelineno-158-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-158-2" id="__codelineno-158-2" name="__codelineno-158-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-158-3" id="__codelineno-158-3" name="__codelineno-158-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-158-4" id="__codelineno-158-4" name="__codelineno-158-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-158-5" id="__codelineno-158-5" name="__codelineno-158-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-158-6" id="__codelineno-158-6" name="__codelineno-158-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-159-1" id="__codelineno-159-1" name="__codelineno-159-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-159-2" id="__codelineno-159-2" name="__codelineno-159-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">LogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-159-3" id="__codelineno-159-3" name="__codelineno-159-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-159-4" id="__codelineno-159-4" name="__codelineno-159-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nf">LogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-159-5" id="__codelineno-159-5" name="__codelineno-159-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-160-1" id="__codelineno-160-1" name="__codelineno-160-1"></a><span class="cm">/* 對數階(遞迴實現)*/</span>
|
||
<a href="#__codelineno-160-2" id="__codelineno-160-2" name="__codelineno-160-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-160-3" id="__codelineno-160-3" name="__codelineno-160-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-160-4" id="__codelineno-160-4" name="__codelineno-160-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-160-5" id="__codelineno-160-5" name="__codelineno-160-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-160-6" id="__codelineno-160-6" name="__codelineno-160-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-160-7" id="__codelineno-160-7" name="__codelineno-160-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-161-1" id="__codelineno-161-1" name="__codelineno-161-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-161-2" id="__codelineno-161-2" name="__codelineno-161-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">logRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-161-3" id="__codelineno-161-3" name="__codelineno-161-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-161-4" id="__codelineno-161-4" name="__codelineno-161-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-161-5" id="__codelineno-161-5" name="__codelineno-161-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-161-6" id="__codelineno-161-6" name="__codelineno-161-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-161-7" id="__codelineno-161-7" name="__codelineno-161-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-162-1" id="__codelineno-162-1" name="__codelineno-162-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-162-2" id="__codelineno-162-2" name="__codelineno-162-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-162-3" id="__codelineno-162-3" name="__codelineno-162-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-162-4" id="__codelineno-162-4" name="__codelineno-162-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-162-5" id="__codelineno-162-5" name="__codelineno-162-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-163-1" id="__codelineno-163-1" name="__codelineno-163-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-163-2" id="__codelineno-163-2" name="__codelineno-163-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-163-3" id="__codelineno-163-3" name="__codelineno-163-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-163-4" id="__codelineno-163-4" name="__codelineno-163-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">logRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-163-5" id="__codelineno-163-5" name="__codelineno-163-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-164-1" id="__codelineno-164-1" name="__codelineno-164-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-164-2" id="__codelineno-164-2" name="__codelineno-164-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-164-3" id="__codelineno-164-3" name="__codelineno-164-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-164-4" id="__codelineno-164-4" name="__codelineno-164-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">~/</span><span class="w"> </span><span class="m">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-164-5" id="__codelineno-164-5" name="__codelineno-164-5"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-165-1" id="__codelineno-165-1" name="__codelineno-165-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-165-2" id="__codelineno-165-2" name="__codelineno-165-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-165-3" id="__codelineno-165-3" name="__codelineno-165-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-165-4" id="__codelineno-165-4" name="__codelineno-165-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-165-5" id="__codelineno-165-5" name="__codelineno-165-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-165-6" id="__codelineno-165-6" name="__codelineno-165-6"></a><span class="w"> </span><span class="n">log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-165-7" id="__codelineno-165-7" name="__codelineno-165-7"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-166-1" id="__codelineno-166-1" name="__codelineno-166-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-166-2" id="__codelineno-166-2" name="__codelineno-166-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">logRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-166-3" id="__codelineno-166-3" name="__codelineno-166-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-166-4" id="__codelineno-166-4" name="__codelineno-166-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-166-5" id="__codelineno-166-5" name="__codelineno-166-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-166-6" id="__codelineno-166-6" name="__codelineno-166-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-167-1" id="__codelineno-167-1" name="__codelineno-167-1"></a><span class="cm">/* 對數階(遞迴實現) */</span>
|
||
<a href="#__codelineno-167-2" id="__codelineno-167-2" name="__codelineno-167-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">logRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-167-3" id="__codelineno-167-3" name="__codelineno-167-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="m">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-167-4" id="__codelineno-167-4" name="__codelineno-167-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-167-5" id="__codelineno-167-5" name="__codelineno-167-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">logRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="m">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-167-6" id="__codelineno-167-6" name="__codelineno-167-6"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-168-1" id="__codelineno-168-1" name="__codelineno-168-1"></a><span class="c1">### 對數階(遞迴實現)###</span>
|
||
<a href="#__codelineno-168-2" id="__codelineno-168-2" name="__codelineno-168-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-168-3" id="__codelineno-168-3" name="__codelineno-168-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">unless</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-168-4" id="__codelineno-168-4" name="__codelineno-168-4"></a><span class="w"> </span><span class="n">log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-168-5" id="__codelineno-168-5" name="__codelineno-168-5"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 423px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20log_recur%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3C%3D%201%3A%0A%20%20%20%20%20%20%20%20return%200%0A%20%20%20%20return%20log_recur%28n%20/%202%29%20%2B%201%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20log_recur%28n%29%0A%20%20%20%20print%28%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=4&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20log_recur%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3C%3D%201%3A%0A%20%20%20%20%20%20%20%20return%200%0A%20%20%20%20return%20log_recur%28n%20/%202%29%20%2B%201%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20log_recur%28n%29%0A%20%20%20%20print%28%22%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=4&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>對數階常出現於基於分治策略的演算法中,體現了“一分為多”和“化繁為簡”的演算法思想。它增長緩慢,是僅次於常數階的理想的時間複雜度。</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title"><span class="arithmatex">\(O(\log n)\)</span> 的底數是多少?</p>
|
||
<p>準確來說,“一分為 <span class="arithmatex">\(m\)</span>”對應的時間複雜度是 <span class="arithmatex">\(O(\log_m n)\)</span> 。而透過對數換底公式,我們可以得到具有不同底數、相等的時間複雜度:</p>
|
||
<div class="arithmatex">\[
|
||
O(\log_m n) = O(\log_k n / \log_k m) = O(\log_k n)
|
||
\]</div>
|
||
<p>也就是說,底數 <span class="arithmatex">\(m\)</span> 可以在不影響複雜度的前提下轉換。因此我們通常會省略底數 <span class="arithmatex">\(m\)</span> ,將對數階直接記為 <span class="arithmatex">\(O(\log n)\)</span> 。</p>
|
||
</div>
|
||
<h3 id="6-on-log-n">6. 線性對數階 <span class="arithmatex">\(O(n \log n)\)</span><a class="headerlink" href="#6-on-log-n" title="Permanent link">¶</a></h3>
|
||
<p>線性對數階常出現於巢狀迴圈中,兩層迴圈的時間複雜度分別為 <span class="arithmatex">\(O(\log n)\)</span> 和 <span class="arithmatex">\(O(n)\)</span> 。相關程式碼如下:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="14:13"><input checked="checked" id="__tabbed_14_1" name="__tabbed_14" type="radio"/><input id="__tabbed_14_2" name="__tabbed_14" type="radio"/><input id="__tabbed_14_3" name="__tabbed_14" type="radio"/><input id="__tabbed_14_4" name="__tabbed_14" type="radio"/><input id="__tabbed_14_5" name="__tabbed_14" type="radio"/><input id="__tabbed_14_6" name="__tabbed_14" type="radio"/><input id="__tabbed_14_7" name="__tabbed_14" type="radio"/><input id="__tabbed_14_8" name="__tabbed_14" type="radio"/><input id="__tabbed_14_9" name="__tabbed_14" type="radio"/><input id="__tabbed_14_10" name="__tabbed_14" type="radio"/><input id="__tabbed_14_11" name="__tabbed_14" type="radio"/><input id="__tabbed_14_12" name="__tabbed_14" type="radio"/><input id="__tabbed_14_13" name="__tabbed_14" type="radio"/><div class="tabbed-labels"><label for="__tabbed_14_1">Python</label><label for="__tabbed_14_2">C++</label><label for="__tabbed_14_3">Java</label><label for="__tabbed_14_4">C#</label><label for="__tabbed_14_5">Go</label><label for="__tabbed_14_6">Swift</label><label for="__tabbed_14_7">JS</label><label for="__tabbed_14_8">TS</label><label for="__tabbed_14_9">Dart</label><label for="__tabbed_14_10">Rust</label><label for="__tabbed_14_11">C</label><label for="__tabbed_14_12">Kotlin</label><label for="__tabbed_14_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-169-1" id="__codelineno-169-1" name="__codelineno-169-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-169-2" id="__codelineno-169-2" name="__codelineno-169-2"></a><span class="w"> </span><span class="sd">"""線性對數階"""</span>
|
||
<a href="#__codelineno-169-3" id="__codelineno-169-3" name="__codelineno-169-3"></a> <span class="k">if</span> <span class="n">n</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span>
|
||
<a href="#__codelineno-169-4" id="__codelineno-169-4" name="__codelineno-169-4"></a> <span class="k">return</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-169-5" id="__codelineno-169-5" name="__codelineno-169-5"></a> <span class="c1"># 一分為二,子問題的規模減小一半</span>
|
||
<a href="#__codelineno-169-6" id="__codelineno-169-6" name="__codelineno-169-6"></a> <span class="n">count</span> <span class="o">=</span> <span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
|
||
<a href="#__codelineno-169-7" id="__codelineno-169-7" name="__codelineno-169-7"></a> <span class="c1"># 當前子問題包含 n 個操作</span>
|
||
<a href="#__codelineno-169-8" id="__codelineno-169-8" name="__codelineno-169-8"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-169-9" id="__codelineno-169-9" name="__codelineno-169-9"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-169-10" id="__codelineno-169-10" name="__codelineno-169-10"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-170-1" id="__codelineno-170-1" name="__codelineno-170-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-170-2" id="__codelineno-170-2" name="__codelineno-170-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linearLogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-170-3" id="__codelineno-170-3" name="__codelineno-170-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-170-4" id="__codelineno-170-4" name="__codelineno-170-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-170-5" id="__codelineno-170-5" name="__codelineno-170-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-170-6" id="__codelineno-170-6" name="__codelineno-170-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-170-7" id="__codelineno-170-7" name="__codelineno-170-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-170-8" id="__codelineno-170-8" name="__codelineno-170-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-170-9" id="__codelineno-170-9" name="__codelineno-170-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-170-10" id="__codelineno-170-10" name="__codelineno-170-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-171-1" id="__codelineno-171-1" name="__codelineno-171-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-171-2" id="__codelineno-171-2" name="__codelineno-171-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linearLogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-171-3" id="__codelineno-171-3" name="__codelineno-171-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-171-4" id="__codelineno-171-4" name="__codelineno-171-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-171-5" id="__codelineno-171-5" name="__codelineno-171-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-171-6" id="__codelineno-171-6" name="__codelineno-171-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-171-7" id="__codelineno-171-7" name="__codelineno-171-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-171-8" id="__codelineno-171-8" name="__codelineno-171-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-171-9" id="__codelineno-171-9" name="__codelineno-171-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-171-10" id="__codelineno-171-10" name="__codelineno-171-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-172-1" id="__codelineno-172-1" name="__codelineno-172-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-172-2" id="__codelineno-172-2" name="__codelineno-172-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">LinearLogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-172-3" id="__codelineno-172-3" name="__codelineno-172-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-172-4" id="__codelineno-172-4" name="__codelineno-172-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">LinearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">LinearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-172-5" id="__codelineno-172-5" name="__codelineno-172-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-172-6" id="__codelineno-172-6" name="__codelineno-172-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-172-7" id="__codelineno-172-7" name="__codelineno-172-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-172-8" id="__codelineno-172-8" name="__codelineno-172-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-172-9" id="__codelineno-172-9" name="__codelineno-172-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-173-1" id="__codelineno-173-1" name="__codelineno-173-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-173-2" id="__codelineno-173-2" name="__codelineno-173-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-173-3" id="__codelineno-173-3" name="__codelineno-173-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-173-4" id="__codelineno-173-4" name="__codelineno-173-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-173-5" id="__codelineno-173-5" name="__codelineno-173-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-173-6" id="__codelineno-173-6" name="__codelineno-173-6"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
|
||
<a href="#__codelineno-173-7" id="__codelineno-173-7" name="__codelineno-173-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-173-8" id="__codelineno-173-8" name="__codelineno-173-8"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-173-9" id="__codelineno-173-9" name="__codelineno-173-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-173-10" id="__codelineno-173-10" name="__codelineno-173-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-173-11" id="__codelineno-173-11" name="__codelineno-173-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-174-1" id="__codelineno-174-1" name="__codelineno-174-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-174-2" id="__codelineno-174-2" name="__codelineno-174-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-174-3" id="__codelineno-174-3" name="__codelineno-174-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-174-4" id="__codelineno-174-4" name="__codelineno-174-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-174-5" id="__codelineno-174-5" name="__codelineno-174-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-174-6" id="__codelineno-174-6" name="__codelineno-174-6"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span>
|
||
<a href="#__codelineno-174-7" id="__codelineno-174-7" name="__codelineno-174-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="bp">stride</span><span class="p">(</span><span class="n">from</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">to</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">by</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-174-8" id="__codelineno-174-8" name="__codelineno-174-8"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-174-9" id="__codelineno-174-9" name="__codelineno-174-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-174-10" id="__codelineno-174-10" name="__codelineno-174-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-174-11" id="__codelineno-174-11" name="__codelineno-174-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-175-1" id="__codelineno-175-1" name="__codelineno-175-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-175-2" id="__codelineno-175-2" name="__codelineno-175-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-175-3" id="__codelineno-175-3" name="__codelineno-175-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-175-4" id="__codelineno-175-4" name="__codelineno-175-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-175-5" id="__codelineno-175-5" name="__codelineno-175-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-175-6" id="__codelineno-175-6" name="__codelineno-175-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-175-7" id="__codelineno-175-7" name="__codelineno-175-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-175-8" id="__codelineno-175-8" name="__codelineno-175-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-175-9" id="__codelineno-175-9" name="__codelineno-175-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-176-1" id="__codelineno-176-1" name="__codelineno-176-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-176-2" id="__codelineno-176-2" name="__codelineno-176-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-176-3" id="__codelineno-176-3" name="__codelineno-176-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-176-4" id="__codelineno-176-4" name="__codelineno-176-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">linearLogRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-176-5" id="__codelineno-176-5" name="__codelineno-176-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-176-6" id="__codelineno-176-6" name="__codelineno-176-6"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-176-7" id="__codelineno-176-7" name="__codelineno-176-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-176-8" id="__codelineno-176-8" name="__codelineno-176-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-176-9" id="__codelineno-176-9" name="__codelineno-176-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-177-1" id="__codelineno-177-1" name="__codelineno-177-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-177-2" id="__codelineno-177-2" name="__codelineno-177-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-177-3" id="__codelineno-177-3" name="__codelineno-177-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-177-4" id="__codelineno-177-4" name="__codelineno-177-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">~/</span><span class="w"> </span><span class="m">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">~/</span><span class="w"> </span><span class="m">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-177-5" id="__codelineno-177-5" name="__codelineno-177-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-177-6" id="__codelineno-177-6" name="__codelineno-177-6"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-177-7" id="__codelineno-177-7" name="__codelineno-177-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-177-8" id="__codelineno-177-8" name="__codelineno-177-8"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-177-9" id="__codelineno-177-9" name="__codelineno-177-9"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-178-1" id="__codelineno-178-1" name="__codelineno-178-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-178-2" id="__codelineno-178-2" name="__codelineno-178-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-178-3" id="__codelineno-178-3" name="__codelineno-178-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-178-4" id="__codelineno-178-4" name="__codelineno-178-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-178-5" id="__codelineno-178-5" name="__codelineno-178-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-178-6" id="__codelineno-178-6" name="__codelineno-178-6"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-178-7" id="__codelineno-178-7" name="__codelineno-178-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-178-8" id="__codelineno-178-8" name="__codelineno-178-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-178-9" id="__codelineno-178-9" name="__codelineno-178-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-178-10" id="__codelineno-178-10" name="__codelineno-178-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-178-11" id="__codelineno-178-11" name="__codelineno-178-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-179-1" id="__codelineno-179-1" name="__codelineno-179-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-179-2" id="__codelineno-179-2" name="__codelineno-179-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">linearLogRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-179-3" id="__codelineno-179-3" name="__codelineno-179-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-179-4" id="__codelineno-179-4" name="__codelineno-179-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-179-5" id="__codelineno-179-5" name="__codelineno-179-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||
<a href="#__codelineno-179-6" id="__codelineno-179-6" name="__codelineno-179-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-179-7" id="__codelineno-179-7" name="__codelineno-179-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
|
||
<a href="#__codelineno-179-8" id="__codelineno-179-8" name="__codelineno-179-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-179-9" id="__codelineno-179-9" name="__codelineno-179-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-179-10" id="__codelineno-179-10" name="__codelineno-179-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-180-1" id="__codelineno-180-1" name="__codelineno-180-1"></a><span class="cm">/* 線性對數階 */</span>
|
||
<a href="#__codelineno-180-2" id="__codelineno-180-2" name="__codelineno-180-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-180-3" id="__codelineno-180-3" name="__codelineno-180-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="m">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-180-4" id="__codelineno-180-4" name="__codelineno-180-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-180-5" id="__codelineno-180-5" name="__codelineno-180-5"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="m">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linearLogRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="m">2</span><span class="p">)</span>
|
||
<a href="#__codelineno-180-6" id="__codelineno-180-6" name="__codelineno-180-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-180-7" id="__codelineno-180-7" name="__codelineno-180-7"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span>
|
||
<a href="#__codelineno-180-8" id="__codelineno-180-8" name="__codelineno-180-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-180-9" id="__codelineno-180-9" name="__codelineno-180-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-180-10" id="__codelineno-180-10" name="__codelineno-180-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-181-1" id="__codelineno-181-1" name="__codelineno-181-1"></a><span class="c1">### 線性對數階 ###</span>
|
||
<a href="#__codelineno-181-2" id="__codelineno-181-2" name="__codelineno-181-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-181-3" id="__codelineno-181-3" name="__codelineno-181-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">unless</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-181-4" id="__codelineno-181-4" name="__codelineno-181-4"></a>
|
||
<a href="#__codelineno-181-5" id="__codelineno-181-5" name="__codelineno-181-5"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">linear_log_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span>
|
||
<a href="#__codelineno-181-6" id="__codelineno-181-6" name="__codelineno-181-6"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-181-7" id="__codelineno-181-7" name="__codelineno-181-7"></a>
|
||
<a href="#__codelineno-181-8" id="__codelineno-181-8" name="__codelineno-181-8"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-181-9" id="__codelineno-181-9" name="__codelineno-181-9"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 477px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20linear_log_recur%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E5%B0%8D%E6%95%B8%E9%9A%8E%22%22%22%0A%20%20%20%20if%20n%20%3C%3D%201%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20count%20%3D%20linear_log_recur%28n%20//%202%29%20%2B%20linear_log_recur%28n%20//%202%29%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20linear_log_recur%28n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=4&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20linear_log_recur%28n%3A%20int%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E7%B7%9A%E6%80%A7%E5%B0%8D%E6%95%B8%E9%9A%8E%22%22%22%0A%20%20%20%20if%20n%20%3C%3D%201%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20count%20%3D%20linear_log_recur%28n%20//%202%29%20%2B%20linear_log_recur%28n%20//%202%29%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%201%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%208%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20linear_log_recur%28n%29%0A%20%20%20%20print%28%22%E7%B7%9A%E6%80%A7%E5%B0%8D%E6%95%B8%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=4&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>圖 2-13 展示了線性對數階的生成方式。二元樹的每一層的操作總數都為 <span class="arithmatex">\(n\)</span> ,樹共有 <span class="arithmatex">\(\log_2 n + 1\)</span> 層,因此時間複雜度為 <span class="arithmatex">\(O(n \log n)\)</span> 。</p>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic_linear.png" data-dark-src="/assets/figure-svg/figures/9f772ac9bceb8fee57e027c7.json" data-src="/assets/figure-svg/figures/1cc492591275d4782e77953f.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic_linear.svg" data-theme="light" tabindex="-1" type="image/svg+xml">線性對數階的時間複雜度</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_logarithmic_linear.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">線性對數階的時間複雜度</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-13 線性對數階的時間複雜度 </p>
|
||
<p>主流排序演算法的時間複雜度通常為 <span class="arithmatex">\(O(n \log n)\)</span> ,例如快速排序、合併排序、堆積排序等。</p>
|
||
<h3 id="7-on">7. 階乘階 <span class="arithmatex">\(O(n!)\)</span><a class="headerlink" href="#7-on" title="Permanent link">¶</a></h3>
|
||
<p>階乘階對應數學上的“全排列”問題。給定 <span class="arithmatex">\(n\)</span> 個互不重複的元素,求其所有可能的排列方案,方案數量為:</p>
|
||
<div class="arithmatex">\[
|
||
n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
|
||
\]</div>
|
||
<p>階乘通常使用遞迴實現。如圖 2-14 和以下程式碼所示,第一層分裂出 <span class="arithmatex">\(n\)</span> 個,第二層分裂出 <span class="arithmatex">\(n - 1\)</span> 個,以此類推,直至第 <span class="arithmatex">\(n\)</span> 層時停止分裂:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="15:13"><input checked="checked" id="__tabbed_15_1" name="__tabbed_15" type="radio"/><input id="__tabbed_15_2" name="__tabbed_15" type="radio"/><input id="__tabbed_15_3" name="__tabbed_15" type="radio"/><input id="__tabbed_15_4" name="__tabbed_15" type="radio"/><input id="__tabbed_15_5" name="__tabbed_15" type="radio"/><input id="__tabbed_15_6" name="__tabbed_15" type="radio"/><input id="__tabbed_15_7" name="__tabbed_15" type="radio"/><input id="__tabbed_15_8" name="__tabbed_15" type="radio"/><input id="__tabbed_15_9" name="__tabbed_15" type="radio"/><input id="__tabbed_15_10" name="__tabbed_15" type="radio"/><input id="__tabbed_15_11" name="__tabbed_15" type="radio"/><input id="__tabbed_15_12" name="__tabbed_15" type="radio"/><input id="__tabbed_15_13" name="__tabbed_15" type="radio"/><div class="tabbed-labels"><label for="__tabbed_15_1">Python</label><label for="__tabbed_15_2">C++</label><label for="__tabbed_15_3">Java</label><label for="__tabbed_15_4">C#</label><label for="__tabbed_15_5">Go</label><label for="__tabbed_15_6">Swift</label><label for="__tabbed_15_7">JS</label><label for="__tabbed_15_8">TS</label><label for="__tabbed_15_9">Dart</label><label for="__tabbed_15_10">Rust</label><label for="__tabbed_15_11">C</label><label for="__tabbed_15_12">Kotlin</label><label for="__tabbed_15_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a href="#__codelineno-182-1" id="__codelineno-182-1" name="__codelineno-182-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">factorial_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-182-2" id="__codelineno-182-2" name="__codelineno-182-2"></a><span class="w"> </span><span class="sd">"""階乘階(遞迴實現)"""</span>
|
||
<a href="#__codelineno-182-3" id="__codelineno-182-3" name="__codelineno-182-3"></a> <span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||
<a href="#__codelineno-182-4" id="__codelineno-182-4" name="__codelineno-182-4"></a> <span class="k">return</span> <span class="mi">1</span>
|
||
<a href="#__codelineno-182-5" id="__codelineno-182-5" name="__codelineno-182-5"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<a href="#__codelineno-182-6" id="__codelineno-182-6" name="__codelineno-182-6"></a> <span class="c1"># 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-182-7" id="__codelineno-182-7" name="__codelineno-182-7"></a> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<a href="#__codelineno-182-8" id="__codelineno-182-8" name="__codelineno-182-8"></a> <span class="n">count</span> <span class="o">+=</span> <span class="n">factorial_recur</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-182-9" id="__codelineno-182-9" name="__codelineno-182-9"></a> <span class="k">return</span> <span class="n">count</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-183-1" id="__codelineno-183-1" name="__codelineno-183-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-183-2" id="__codelineno-183-2" name="__codelineno-183-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">factorialRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-183-3" id="__codelineno-183-3" name="__codelineno-183-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-183-4" id="__codelineno-183-4" name="__codelineno-183-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-183-5" id="__codelineno-183-5" name="__codelineno-183-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-183-6" id="__codelineno-183-6" name="__codelineno-183-6"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-183-7" id="__codelineno-183-7" name="__codelineno-183-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-183-8" id="__codelineno-183-8" name="__codelineno-183-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-183-9" id="__codelineno-183-9" name="__codelineno-183-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-183-10" id="__codelineno-183-10" name="__codelineno-183-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-183-11" id="__codelineno-183-11" name="__codelineno-183-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.java</span><pre><span></span><code><a href="#__codelineno-184-1" id="__codelineno-184-1" name="__codelineno-184-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-184-2" id="__codelineno-184-2" name="__codelineno-184-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">factorialRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-184-3" id="__codelineno-184-3" name="__codelineno-184-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-184-4" id="__codelineno-184-4" name="__codelineno-184-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-184-5" id="__codelineno-184-5" name="__codelineno-184-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-184-6" id="__codelineno-184-6" name="__codelineno-184-6"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-184-7" id="__codelineno-184-7" name="__codelineno-184-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-184-8" id="__codelineno-184-8" name="__codelineno-184-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-184-9" id="__codelineno-184-9" name="__codelineno-184-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-184-10" id="__codelineno-184-10" name="__codelineno-184-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-184-11" id="__codelineno-184-11" name="__codelineno-184-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-185-1" id="__codelineno-185-1" name="__codelineno-185-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-185-2" id="__codelineno-185-2" name="__codelineno-185-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">FactorialRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-185-3" id="__codelineno-185-3" name="__codelineno-185-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-185-4" id="__codelineno-185-4" name="__codelineno-185-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-185-5" id="__codelineno-185-5" name="__codelineno-185-5"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-185-6" id="__codelineno-185-6" name="__codelineno-185-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-185-7" id="__codelineno-185-7" name="__codelineno-185-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">FactorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-185-8" id="__codelineno-185-8" name="__codelineno-185-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-185-9" id="__codelineno-185-9" name="__codelineno-185-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-185-10" id="__codelineno-185-10" name="__codelineno-185-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.go</span><pre><span></span><code><a href="#__codelineno-186-1" id="__codelineno-186-1" name="__codelineno-186-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-186-2" id="__codelineno-186-2" name="__codelineno-186-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-186-3" id="__codelineno-186-3" name="__codelineno-186-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-186-4" id="__codelineno-186-4" name="__codelineno-186-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-186-5" id="__codelineno-186-5" name="__codelineno-186-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-186-6" id="__codelineno-186-6" name="__codelineno-186-6"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-186-7" id="__codelineno-186-7" name="__codelineno-186-7"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-186-8" id="__codelineno-186-8" name="__codelineno-186-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-186-9" id="__codelineno-186-9" name="__codelineno-186-9"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-186-10" id="__codelineno-186-10" name="__codelineno-186-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-186-11" id="__codelineno-186-11" name="__codelineno-186-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span>
|
||
<a href="#__codelineno-186-12" id="__codelineno-186-12" name="__codelineno-186-12"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-187-1" id="__codelineno-187-1" name="__codelineno-187-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-187-2" id="__codelineno-187-2" name="__codelineno-187-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-187-3" id="__codelineno-187-3" name="__codelineno-187-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-187-4" id="__codelineno-187-4" name="__codelineno-187-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-187-5" id="__codelineno-187-5" name="__codelineno-187-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-187-6" id="__codelineno-187-6" name="__codelineno-187-6"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-187-7" id="__codelineno-187-7" name="__codelineno-187-7"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-187-8" id="__codelineno-187-8" name="__codelineno-187-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">..</span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-187-9" id="__codelineno-187-9" name="__codelineno-187-9"></a><span class="w"> </span><span class="bp">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-187-10" id="__codelineno-187-10" name="__codelineno-187-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-187-11" id="__codelineno-187-11" name="__codelineno-187-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="bp">count</span>
|
||
<a href="#__codelineno-187-12" id="__codelineno-187-12" name="__codelineno-187-12"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.js</span><pre><span></span><code><a href="#__codelineno-188-1" id="__codelineno-188-1" name="__codelineno-188-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-188-2" id="__codelineno-188-2" name="__codelineno-188-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-188-3" id="__codelineno-188-3" name="__codelineno-188-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-188-4" id="__codelineno-188-4" name="__codelineno-188-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-188-5" id="__codelineno-188-5" name="__codelineno-188-5"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-188-6" id="__codelineno-188-6" name="__codelineno-188-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-188-7" id="__codelineno-188-7" name="__codelineno-188-7"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-188-8" id="__codelineno-188-8" name="__codelineno-188-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-188-9" id="__codelineno-188-9" name="__codelineno-188-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-188-10" id="__codelineno-188-10" name="__codelineno-188-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-189-1" id="__codelineno-189-1" name="__codelineno-189-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-189-2" id="__codelineno-189-2" name="__codelineno-189-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-189-3" id="__codelineno-189-3" name="__codelineno-189-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-189-4" id="__codelineno-189-4" name="__codelineno-189-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-189-5" id="__codelineno-189-5" name="__codelineno-189-5"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-189-6" id="__codelineno-189-6" name="__codelineno-189-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-189-7" id="__codelineno-189-7" name="__codelineno-189-7"></a><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">factorialRecur</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-189-8" id="__codelineno-189-8" name="__codelineno-189-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-189-9" id="__codelineno-189-9" name="__codelineno-189-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-189-10" id="__codelineno-189-10" name="__codelineno-189-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-190-1" id="__codelineno-190-1" name="__codelineno-190-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-190-2" id="__codelineno-190-2" name="__codelineno-190-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-190-3" id="__codelineno-190-3" name="__codelineno-190-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">0</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-190-4" id="__codelineno-190-4" name="__codelineno-190-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-190-5" id="__codelineno-190-5" name="__codelineno-190-5"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-190-6" id="__codelineno-190-6" name="__codelineno-190-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-190-7" id="__codelineno-190-7" name="__codelineno-190-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-190-8" id="__codelineno-190-8" name="__codelineno-190-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-190-9" id="__codelineno-190-9" name="__codelineno-190-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-190-10" id="__codelineno-190-10" name="__codelineno-190-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-191-1" id="__codelineno-191-1" name="__codelineno-191-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-191-2" id="__codelineno-191-2" name="__codelineno-191-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">factorial_recur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-191-3" id="__codelineno-191-3" name="__codelineno-191-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-191-4" id="__codelineno-191-4" name="__codelineno-191-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-191-5" id="__codelineno-191-5" name="__codelineno-191-5"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-191-6" id="__codelineno-191-6" name="__codelineno-191-6"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-191-7" id="__codelineno-191-7" name="__codelineno-191-7"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-191-8" id="__codelineno-191-8" name="__codelineno-191-8"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-191-9" id="__codelineno-191-9" name="__codelineno-191-9"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorial_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-191-10" id="__codelineno-191-10" name="__codelineno-191-10"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-191-11" id="__codelineno-191-11" name="__codelineno-191-11"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-191-12" id="__codelineno-191-12" name="__codelineno-191-12"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.c</span><pre><span></span><code><a href="#__codelineno-192-1" id="__codelineno-192-1" name="__codelineno-192-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-192-2" id="__codelineno-192-2" name="__codelineno-192-2"></a><span class="kt">int</span><span class="w"> </span><span class="nf">factorialRecur</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-192-3" id="__codelineno-192-3" name="__codelineno-192-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-192-4" id="__codelineno-192-4" name="__codelineno-192-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-192-5" id="__codelineno-192-5" name="__codelineno-192-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<a href="#__codelineno-192-6" id="__codelineno-192-6" name="__codelineno-192-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-192-7" id="__codelineno-192-7" name="__codelineno-192-7"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-192-8" id="__codelineno-192-8" name="__codelineno-192-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-192-9" id="__codelineno-192-9" name="__codelineno-192-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
||
<a href="#__codelineno-192-10" id="__codelineno-192-10" name="__codelineno-192-10"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-193-1" id="__codelineno-193-1" name="__codelineno-193-1"></a><span class="cm">/* 階乘階(遞迴實現) */</span>
|
||
<a href="#__codelineno-193-2" id="__codelineno-193-2" name="__codelineno-193-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-193-3" id="__codelineno-193-3" name="__codelineno-193-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">0</span><span class="p">)</span>
|
||
<a href="#__codelineno-193-4" id="__codelineno-193-4" name="__codelineno-193-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-193-5" id="__codelineno-193-5" name="__codelineno-193-5"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>
|
||
<a href="#__codelineno-193-6" id="__codelineno-193-6" name="__codelineno-193-6"></a><span class="w"> </span><span class="c1">// 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-193-7" id="__codelineno-193-7" name="__codelineno-193-7"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-193-8" id="__codelineno-193-8" name="__codelineno-193-8"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorialRecur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-193-9" id="__codelineno-193-9" name="__codelineno-193-9"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-193-10" id="__codelineno-193-10" name="__codelineno-193-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-193-11" id="__codelineno-193-11" name="__codelineno-193-11"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-194-1" id="__codelineno-194-1" name="__codelineno-194-1"></a><span class="c1">### 階乘階(遞迴實現)###</span>
|
||
<a href="#__codelineno-194-2" id="__codelineno-194-2" name="__codelineno-194-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">factorial_recur</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-194-3" id="__codelineno-194-3" name="__codelineno-194-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-194-4" id="__codelineno-194-4" name="__codelineno-194-4"></a>
|
||
<a href="#__codelineno-194-5" id="__codelineno-194-5" name="__codelineno-194-5"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<a href="#__codelineno-194-6" id="__codelineno-194-6" name="__codelineno-194-6"></a><span class="w"> </span><span class="c1"># 從 1 個分裂出 n 個</span>
|
||
<a href="#__codelineno-194-7" id="__codelineno-194-7" name="__codelineno-194-7"></a><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">...</span><span class="n">n</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">factorial_recur</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-194-8" id="__codelineno-194-8" name="__codelineno-194-8"></a>
|
||
<a href="#__codelineno-194-9" id="__codelineno-194-9" name="__codelineno-194-9"></a><span class="w"> </span><span class="n">count</span>
|
||
<a href="#__codelineno-194-10" id="__codelineno-194-10" name="__codelineno-194-10"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 495px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=def%20factorial_recur%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E9%9A%8E%E4%B9%98%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E5%BE%9E%201%20%E5%80%8B%E5%88%86%E8%A3%82%E5%87%BA%20n%20%E5%80%8B%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%20factorial_recur%28n%20-%201%29%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%204%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20factorial_recur%28n%29%0A%20%20%20%20print%28%22%E9%9A%8E%E4%B9%98%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=def%20factorial_recur%28n%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E9%9A%8E%E4%B9%98%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%22%22%22%0A%20%20%20%20if%20n%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20count%20%3D%200%0A%20%20%20%20%23%20%E5%BE%9E%201%20%E5%80%8B%E5%88%86%E8%A3%82%E5%87%BA%20n%20%E5%80%8B%0A%20%20%20%20for%20_%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20count%20%2B%3D%20factorial_recur%28n%20-%201%29%0A%20%20%20%20return%20count%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%204%0A%20%20%20%20print%28%22%E8%BC%B8%E5%85%A5%E8%B3%87%E6%96%99%E5%A4%A7%E5%B0%8F%20n%20%3D%22%2C%20n%29%0A%0A%20%20%20%20count%20%3D%20factorial_recur%28n%29%0A%20%20%20%20print%28%22%E9%9A%8E%E4%B9%98%E9%9A%8E%EF%BC%88%E9%81%9E%E8%BF%B4%E5%AF%A6%E7%8F%BE%EF%BC%89%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B8%E9%87%8F%20%3D%22%2C%20count%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=3&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p><ha-svg-figure class="animation-figure" data-book-key="zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_factorial.png" data-dark-src="/assets/figure-svg/figures/bef4273e2d4be7de5892a89f.json" data-src="/assets/figure-svg/figures/d629abd39361666d54d6d062.json" style=";--figure-ratio:960.0/540.0"><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_factorial.svg" data-theme="light" tabindex="-1" type="image/svg+xml">階乘階的時間複雜度</object><object data="/zh-hant/chapter_computational_complexity/time_complexity.assets/time_complexity_factorial.dark.svg" data-theme="dark" tabindex="-1" type="image/svg+xml">階乘階的時間複雜度</object></ha-svg-figure></p>
|
||
<p align="center"> 圖 2-14 階乘階的時間複雜度 </p>
|
||
<p>請注意,因為當 <span class="arithmatex">\(n \geq 4\)</span> 時恆有 <span class="arithmatex">\(n! > 2^n\)</span> ,所以階乘階比指數階增長得更快,在 <span class="arithmatex">\(n\)</span> 較大時也是不可接受的。</p>
|
||
<h2 id="235">2.3.5 最差、最佳、平均時間複雜度<a class="headerlink" href="#235" title="Permanent link">¶</a></h2>
|
||
<p><strong>演算法的時間效率往往不是固定的,而是與輸入資料的分佈有關</strong>。假設輸入一個長度為 <span class="arithmatex">\(n\)</span> 的陣列 <code>nums</code> ,其中 <code>nums</code> 由從 <span class="arithmatex">\(1\)</span> 至 <span class="arithmatex">\(n\)</span> 的數字組成,每個數字只出現一次;但元素順序是隨機打亂的,任務目標是返回元素 <span class="arithmatex">\(1\)</span> 的索引。我們可以得出以下結論。</p>
|
||
<ul>
|
||
<li>當 <code>nums = [?, ?, ..., 1]</code> ,即當末尾元素是 <span class="arithmatex">\(1\)</span> 時,需要完整走訪陣列,<strong>達到最差時間複雜度 <span class="arithmatex">\(O(n)\)</span></strong> 。</li>
|
||
<li>當 <code>nums = [1, ?, ?, ...]</code> ,即當首個元素為 <span class="arithmatex">\(1\)</span> 時,無論陣列多長都不需要繼續走訪,<strong>達到最佳時間複雜度 <span class="arithmatex">\(\Omega(1)\)</span></strong> 。</li>
|
||
</ul>
|
||
<p>“最差時間複雜度”對應函式漸近上界,使用大 <span class="arithmatex">\(O\)</span> 記號表示。相應地,“最佳時間複雜度”對應函式漸近下界,用 <span class="arithmatex">\(\Omega\)</span> 記號表示:</p>
|
||
<div class="tabbed-set tabbed-alternate" data-tabs="16:13"><input checked="checked" id="__tabbed_16_1" name="__tabbed_16" type="radio"/><input id="__tabbed_16_2" name="__tabbed_16" type="radio"/><input id="__tabbed_16_3" name="__tabbed_16" type="radio"/><input id="__tabbed_16_4" name="__tabbed_16" type="radio"/><input id="__tabbed_16_5" name="__tabbed_16" type="radio"/><input id="__tabbed_16_6" name="__tabbed_16" type="radio"/><input id="__tabbed_16_7" name="__tabbed_16" type="radio"/><input id="__tabbed_16_8" name="__tabbed_16" type="radio"/><input id="__tabbed_16_9" name="__tabbed_16" type="radio"/><input id="__tabbed_16_10" name="__tabbed_16" type="radio"/><input id="__tabbed_16_11" name="__tabbed_16" type="radio"/><input id="__tabbed_16_12" name="__tabbed_16" type="radio"/><input id="__tabbed_16_13" name="__tabbed_16" type="radio"/><div class="tabbed-labels"><label for="__tabbed_16_1">Python</label><label for="__tabbed_16_2">C++</label><label for="__tabbed_16_3">Java</label><label for="__tabbed_16_4">C#</label><label for="__tabbed_16_5">Go</label><label for="__tabbed_16_6">Swift</label><label for="__tabbed_16_7">JS</label><label for="__tabbed_16_8">TS</label><label for="__tabbed_16_9">Dart</label><label for="__tabbed_16_10">Rust</label><label for="__tabbed_16_11">C</label><label for="__tabbed_16_12">Kotlin</label><label for="__tabbed_16_13">Ruby</label></div>
|
||
<div class="tabbed-content">
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.py</span><pre><span></span><code><a href="#__codelineno-195-1" id="__codelineno-195-1" name="__codelineno-195-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">random_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
|
||
<a href="#__codelineno-195-2" id="__codelineno-195-2" name="__codelineno-195-2"></a><span class="w"> </span><span class="sd">"""生成一個陣列,元素為: 1, 2, ..., n ,順序被打亂"""</span>
|
||
<a href="#__codelineno-195-3" id="__codelineno-195-3" name="__codelineno-195-3"></a> <span class="c1"># 生成陣列 nums =: 1, 2, 3, ..., n</span>
|
||
<a href="#__codelineno-195-4" id="__codelineno-195-4" name="__codelineno-195-4"></a> <span class="n">nums</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span>
|
||
<a href="#__codelineno-195-5" id="__codelineno-195-5" name="__codelineno-195-5"></a> <span class="c1"># 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-195-6" id="__codelineno-195-6" name="__codelineno-195-6"></a> <span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
|
||
<a href="#__codelineno-195-7" id="__codelineno-195-7" name="__codelineno-195-7"></a> <span class="k">return</span> <span class="n">nums</span>
|
||
<a href="#__codelineno-195-8" id="__codelineno-195-8" name="__codelineno-195-8"></a>
|
||
<a href="#__codelineno-195-9" id="__codelineno-195-9" name="__codelineno-195-9"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_one</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||
<a href="#__codelineno-195-10" id="__codelineno-195-10" name="__codelineno-195-10"></a><span class="w"> </span><span class="sd">"""查詢陣列 nums 中數字 1 所在索引"""</span>
|
||
<a href="#__codelineno-195-11" id="__codelineno-195-11" name="__codelineno-195-11"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nums</span><span class="p">)):</span>
|
||
<a href="#__codelineno-195-12" id="__codelineno-195-12" name="__codelineno-195-12"></a> <span class="c1"># 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-195-13" id="__codelineno-195-13" name="__codelineno-195-13"></a> <span class="c1"># 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-195-14" id="__codelineno-195-14" name="__codelineno-195-14"></a> <span class="k">if</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||
<a href="#__codelineno-195-15" id="__codelineno-195-15" name="__codelineno-195-15"></a> <span class="k">return</span> <span class="n">i</span>
|
||
<a href="#__codelineno-195-16" id="__codelineno-195-16" name="__codelineno-195-16"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.cpp</span><pre><span></span><code><a href="#__codelineno-196-1" id="__codelineno-196-1" name="__codelineno-196-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-196-2" id="__codelineno-196-2" name="__codelineno-196-2"></a><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">randomNumbers</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-196-3" id="__codelineno-196-3" name="__codelineno-196-3"></a><span class="w"> </span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
|
||
<a href="#__codelineno-196-4" id="__codelineno-196-4" name="__codelineno-196-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-196-5" id="__codelineno-196-5" name="__codelineno-196-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-196-6" id="__codelineno-196-6" name="__codelineno-196-6"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-196-7" id="__codelineno-196-7" name="__codelineno-196-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-196-8" id="__codelineno-196-8" name="__codelineno-196-8"></a><span class="w"> </span><span class="c1">// 使用系統時間生成隨機種子</span>
|
||
<a href="#__codelineno-196-9" id="__codelineno-196-9" name="__codelineno-196-9"></a><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">seed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">chrono</span><span class="o">::</span><span class="n">system_clock</span><span class="o">::</span><span class="n">now</span><span class="p">().</span><span class="n">time_since_epoch</span><span class="p">().</span><span class="n">count</span><span class="p">();</span>
|
||
<a href="#__codelineno-196-10" id="__codelineno-196-10" name="__codelineno-196-10"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-196-11" id="__codelineno-196-11" name="__codelineno-196-11"></a><span class="w"> </span><span class="n">shuffle</span><span class="p">(</span><span class="n">nums</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span><span class="w"> </span><span class="n">default_random_engine</span><span class="p">(</span><span class="n">seed</span><span class="p">));</span>
|
||
<a href="#__codelineno-196-12" id="__codelineno-196-12" name="__codelineno-196-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-196-13" id="__codelineno-196-13" name="__codelineno-196-13"></a><span class="p">}</span>
|
||
<a href="#__codelineno-196-14" id="__codelineno-196-14" name="__codelineno-196-14"></a>
|
||
<a href="#__codelineno-196-15" id="__codelineno-196-15" name="__codelineno-196-15"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-196-16" id="__codelineno-196-16" name="__codelineno-196-16"></a><span class="kt">int</span><span class="w"> </span><span class="n">findOne</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="o">&</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-196-17" id="__codelineno-196-17" name="__codelineno-196-17"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">size</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-196-18" id="__codelineno-196-18" name="__codelineno-196-18"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-196-19" id="__codelineno-196-19" name="__codelineno-196-19"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-196-20" id="__codelineno-196-20" name="__codelineno-196-20"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-196-21" id="__codelineno-196-21" name="__codelineno-196-21"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-196-22" id="__codelineno-196-22" name="__codelineno-196-22"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-196-23" id="__codelineno-196-23" name="__codelineno-196-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span>
|
||
<a href="#__codelineno-196-24" id="__codelineno-196-24" name="__codelineno-196-24"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.java</span><pre><span></span><code><a href="#__codelineno-197-1" id="__codelineno-197-1" name="__codelineno-197-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-197-2" id="__codelineno-197-2" name="__codelineno-197-2"></a><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="nf">randomNumbers</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-197-3" id="__codelineno-197-3" name="__codelineno-197-3"></a><span class="w"> </span><span class="n">Integer</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Integer</span><span class="o">[</span><span class="n">n</span><span class="o">]</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-4" id="__codelineno-197-4" name="__codelineno-197-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-197-5" id="__codelineno-197-5" name="__codelineno-197-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-197-6" id="__codelineno-197-6" name="__codelineno-197-6"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-7" id="__codelineno-197-7" name="__codelineno-197-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-197-8" id="__codelineno-197-8" name="__codelineno-197-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-197-9" id="__codelineno-197-9" name="__codelineno-197-9"></a><span class="w"> </span><span class="n">Collections</span><span class="p">.</span><span class="na">shuffle</span><span class="p">(</span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="n">nums</span><span class="p">));</span>
|
||
<a href="#__codelineno-197-10" id="__codelineno-197-10" name="__codelineno-197-10"></a><span class="w"> </span><span class="c1">// Integer[] -> int[]</span>
|
||
<a href="#__codelineno-197-11" id="__codelineno-197-11" name="__codelineno-197-11"></a><span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="o">[</span><span class="n">n</span><span class="o">]</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-12" id="__codelineno-197-12" name="__codelineno-197-12"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-197-13" id="__codelineno-197-13" name="__codelineno-197-13"></a><span class="w"> </span><span class="n">res</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-14" id="__codelineno-197-14" name="__codelineno-197-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-197-15" id="__codelineno-197-15" name="__codelineno-197-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">res</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-16" id="__codelineno-197-16" name="__codelineno-197-16"></a><span class="p">}</span>
|
||
<a href="#__codelineno-197-17" id="__codelineno-197-17" name="__codelineno-197-17"></a>
|
||
<a href="#__codelineno-197-18" id="__codelineno-197-18" name="__codelineno-197-18"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-197-19" id="__codelineno-197-19" name="__codelineno-197-19"></a><span class="kt">int</span><span class="w"> </span><span class="nf">findOne</span><span class="p">(</span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-197-20" id="__codelineno-197-20" name="__codelineno-197-20"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-197-21" id="__codelineno-197-21" name="__codelineno-197-21"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-197-22" id="__codelineno-197-22" name="__codelineno-197-22"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-197-23" id="__codelineno-197-23" name="__codelineno-197-23"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-197-24" id="__codelineno-197-24" name="__codelineno-197-24"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-25" id="__codelineno-197-25" name="__codelineno-197-25"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-197-26" id="__codelineno-197-26" name="__codelineno-197-26"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-197-27" id="__codelineno-197-27" name="__codelineno-197-27"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.cs</span><pre><span></span><code><a href="#__codelineno-198-1" id="__codelineno-198-1" name="__codelineno-198-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-198-2" id="__codelineno-198-2" name="__codelineno-198-2"></a><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="nf">RandomNumbers</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-198-3" id="__codelineno-198-3" name="__codelineno-198-3"></a><span class="w"> </span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">n</span><span class="p">];</span>
|
||
<a href="#__codelineno-198-4" id="__codelineno-198-4" name="__codelineno-198-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-198-5" id="__codelineno-198-5" name="__codelineno-198-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-198-6" id="__codelineno-198-6" name="__codelineno-198-6"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-198-7" id="__codelineno-198-7" name="__codelineno-198-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-198-8" id="__codelineno-198-8" name="__codelineno-198-8"></a>
|
||
<a href="#__codelineno-198-9" id="__codelineno-198-9" name="__codelineno-198-9"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-198-10" id="__codelineno-198-10" name="__codelineno-198-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">Length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-198-11" id="__codelineno-198-11" name="__codelineno-198-11"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Random</span><span class="p">().</span><span class="n">Next</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">Length</span><span class="p">);</span>
|
||
<a href="#__codelineno-198-12" id="__codelineno-198-12" name="__codelineno-198-12"></a><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">])</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">],</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
|
||
<a href="#__codelineno-198-13" id="__codelineno-198-13" name="__codelineno-198-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-198-14" id="__codelineno-198-14" name="__codelineno-198-14"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-198-15" id="__codelineno-198-15" name="__codelineno-198-15"></a><span class="p">}</span>
|
||
<a href="#__codelineno-198-16" id="__codelineno-198-16" name="__codelineno-198-16"></a>
|
||
<a href="#__codelineno-198-17" id="__codelineno-198-17" name="__codelineno-198-17"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-198-18" id="__codelineno-198-18" name="__codelineno-198-18"></a><span class="kt">int</span><span class="w"> </span><span class="nf">FindOne</span><span class="p">(</span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-198-19" id="__codelineno-198-19" name="__codelineno-198-19"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">Length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-198-20" id="__codelineno-198-20" name="__codelineno-198-20"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-198-21" id="__codelineno-198-21" name="__codelineno-198-21"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-198-22" id="__codelineno-198-22" name="__codelineno-198-22"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-198-23" id="__codelineno-198-23" name="__codelineno-198-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-198-24" id="__codelineno-198-24" name="__codelineno-198-24"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-198-25" id="__codelineno-198-25" name="__codelineno-198-25"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-198-26" id="__codelineno-198-26" name="__codelineno-198-26"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.go</span><pre><span></span><code><a href="#__codelineno-199-1" id="__codelineno-199-1" name="__codelineno-199-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-199-2" id="__codelineno-199-2" name="__codelineno-199-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">randomNumbers</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-3" id="__codelineno-199-3" name="__codelineno-199-3"></a><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nb">make</span><span class="p">([]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-199-4" id="__codelineno-199-4" name="__codelineno-199-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-199-5" id="__codelineno-199-5" name="__codelineno-199-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-6" id="__codelineno-199-6" name="__codelineno-199-6"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-199-7" id="__codelineno-199-7" name="__codelineno-199-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-199-8" id="__codelineno-199-8" name="__codelineno-199-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-199-9" id="__codelineno-199-9" name="__codelineno-199-9"></a><span class="w"> </span><span class="nx">rand</span><span class="p">.</span><span class="nx">Shuffle</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">),</span><span class="w"> </span><span class="kd">func</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-10" id="__codelineno-199-10" name="__codelineno-199-10"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">],</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
|
||
<a href="#__codelineno-199-11" id="__codelineno-199-11" name="__codelineno-199-11"></a><span class="w"> </span><span class="p">})</span>
|
||
<a href="#__codelineno-199-12" id="__codelineno-199-12" name="__codelineno-199-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span>
|
||
<a href="#__codelineno-199-13" id="__codelineno-199-13" name="__codelineno-199-13"></a><span class="p">}</span>
|
||
<a href="#__codelineno-199-14" id="__codelineno-199-14" name="__codelineno-199-14"></a>
|
||
<a href="#__codelineno-199-15" id="__codelineno-199-15" name="__codelineno-199-15"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-199-16" id="__codelineno-199-16" name="__codelineno-199-16"></a><span class="kd">func</span><span class="w"> </span><span class="nx">findOne</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-17" id="__codelineno-199-17" name="__codelineno-199-17"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">);</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-18" id="__codelineno-199-18" name="__codelineno-199-18"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-199-19" id="__codelineno-199-19" name="__codelineno-199-19"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-199-20" id="__codelineno-199-20" name="__codelineno-199-20"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-199-21" id="__codelineno-199-21" name="__codelineno-199-21"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span>
|
||
<a href="#__codelineno-199-22" id="__codelineno-199-22" name="__codelineno-199-22"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-199-23" id="__codelineno-199-23" name="__codelineno-199-23"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-199-24" id="__codelineno-199-24" name="__codelineno-199-24"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||
<a href="#__codelineno-199-25" id="__codelineno-199-25" name="__codelineno-199-25"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.swift</span><pre><span></span><code><a href="#__codelineno-200-1" id="__codelineno-200-1" name="__codelineno-200-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-200-2" id="__codelineno-200-2" name="__codelineno-200-2"></a><span class="kd">func</span><span class="w"> </span><span class="nf">randomNumbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="p">[</span><span class="nb">Int</span><span class="p">]</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-200-3" id="__codelineno-200-3" name="__codelineno-200-3"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-200-4" id="__codelineno-200-4" name="__codelineno-200-4"></a><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">nums</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-200-5" id="__codelineno-200-5" name="__codelineno-200-5"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-200-6" id="__codelineno-200-6" name="__codelineno-200-6"></a><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">shuffle</span><span class="p">()</span>
|
||
<a href="#__codelineno-200-7" id="__codelineno-200-7" name="__codelineno-200-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span>
|
||
<a href="#__codelineno-200-8" id="__codelineno-200-8" name="__codelineno-200-8"></a><span class="p">}</span>
|
||
<a href="#__codelineno-200-9" id="__codelineno-200-9" name="__codelineno-200-9"></a>
|
||
<a href="#__codelineno-200-10" id="__codelineno-200-10" name="__codelineno-200-10"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-200-11" id="__codelineno-200-11" name="__codelineno-200-11"></a><span class="kd">func</span><span class="w"> </span><span class="nf">findOne</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="nb">Int</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-200-12" id="__codelineno-200-12" name="__codelineno-200-12"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-200-13" id="__codelineno-200-13" name="__codelineno-200-13"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-200-14" id="__codelineno-200-14" name="__codelineno-200-14"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-200-15" id="__codelineno-200-15" name="__codelineno-200-15"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-200-16" id="__codelineno-200-16" name="__codelineno-200-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span>
|
||
<a href="#__codelineno-200-17" id="__codelineno-200-17" name="__codelineno-200-17"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-200-18" id="__codelineno-200-18" name="__codelineno-200-18"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-200-19" id="__codelineno-200-19" name="__codelineno-200-19"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||
<a href="#__codelineno-200-20" id="__codelineno-200-20" name="__codelineno-200-20"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.js</span><pre><span></span><code><a href="#__codelineno-201-1" id="__codelineno-201-1" name="__codelineno-201-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-201-2" id="__codelineno-201-2" name="__codelineno-201-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">randomNumbers</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-3" id="__codelineno-201-3" name="__codelineno-201-3"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">);</span>
|
||
<a href="#__codelineno-201-4" id="__codelineno-201-4" name="__codelineno-201-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-201-5" id="__codelineno-201-5" name="__codelineno-201-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-6" id="__codelineno-201-6" name="__codelineno-201-6"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-201-7" id="__codelineno-201-7" name="__codelineno-201-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-201-8" id="__codelineno-201-8" name="__codelineno-201-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-201-9" id="__codelineno-201-9" name="__codelineno-201-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-10" id="__codelineno-201-10" name="__codelineno-201-10"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">));</span>
|
||
<a href="#__codelineno-201-11" id="__codelineno-201-11" name="__codelineno-201-11"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
||
<a href="#__codelineno-201-12" id="__codelineno-201-12" name="__codelineno-201-12"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">r</span><span class="p">];</span>
|
||
<a href="#__codelineno-201-13" id="__codelineno-201-13" name="__codelineno-201-13"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">r</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">temp</span><span class="p">;</span>
|
||
<a href="#__codelineno-201-14" id="__codelineno-201-14" name="__codelineno-201-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-201-15" id="__codelineno-201-15" name="__codelineno-201-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-201-16" id="__codelineno-201-16" name="__codelineno-201-16"></a><span class="p">}</span>
|
||
<a href="#__codelineno-201-17" id="__codelineno-201-17" name="__codelineno-201-17"></a>
|
||
<a href="#__codelineno-201-18" id="__codelineno-201-18" name="__codelineno-201-18"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-201-19" id="__codelineno-201-19" name="__codelineno-201-19"></a><span class="kd">function</span><span class="w"> </span><span class="nx">findOne</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-20" id="__codelineno-201-20" name="__codelineno-201-20"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-21" id="__codelineno-201-21" name="__codelineno-201-21"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-201-22" id="__codelineno-201-22" name="__codelineno-201-22"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-201-23" id="__codelineno-201-23" name="__codelineno-201-23"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-201-24" id="__codelineno-201-24" name="__codelineno-201-24"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-201-25" id="__codelineno-201-25" name="__codelineno-201-25"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-201-26" id="__codelineno-201-26" name="__codelineno-201-26"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-201-27" id="__codelineno-201-27" name="__codelineno-201-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-201-28" id="__codelineno-201-28" name="__codelineno-201-28"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.ts</span><pre><span></span><code><a href="#__codelineno-202-1" id="__codelineno-202-1" name="__codelineno-202-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-202-2" id="__codelineno-202-2" name="__codelineno-202-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">randomNumbers</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-3" id="__codelineno-202-3" name="__codelineno-202-3"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">);</span>
|
||
<a href="#__codelineno-202-4" id="__codelineno-202-4" name="__codelineno-202-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-202-5" id="__codelineno-202-5" name="__codelineno-202-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-6" id="__codelineno-202-6" name="__codelineno-202-6"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-202-7" id="__codelineno-202-7" name="__codelineno-202-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-202-8" id="__codelineno-202-8" name="__codelineno-202-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-202-9" id="__codelineno-202-9" name="__codelineno-202-9"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-10" id="__codelineno-202-10" name="__codelineno-202-10"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">));</span>
|
||
<a href="#__codelineno-202-11" id="__codelineno-202-11" name="__codelineno-202-11"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
||
<a href="#__codelineno-202-12" id="__codelineno-202-12" name="__codelineno-202-12"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">r</span><span class="p">];</span>
|
||
<a href="#__codelineno-202-13" id="__codelineno-202-13" name="__codelineno-202-13"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">r</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">temp</span><span class="p">;</span>
|
||
<a href="#__codelineno-202-14" id="__codelineno-202-14" name="__codelineno-202-14"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-202-15" id="__codelineno-202-15" name="__codelineno-202-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-202-16" id="__codelineno-202-16" name="__codelineno-202-16"></a><span class="p">}</span>
|
||
<a href="#__codelineno-202-17" id="__codelineno-202-17" name="__codelineno-202-17"></a>
|
||
<a href="#__codelineno-202-18" id="__codelineno-202-18" name="__codelineno-202-18"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-202-19" id="__codelineno-202-19" name="__codelineno-202-19"></a><span class="kd">function</span><span class="w"> </span><span class="nx">findOne</span><span class="p">(</span><span class="nx">nums</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[])</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-20" id="__codelineno-202-20" name="__codelineno-202-20"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-21" id="__codelineno-202-21" name="__codelineno-202-21"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-202-22" id="__codelineno-202-22" name="__codelineno-202-22"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-202-23" id="__codelineno-202-23" name="__codelineno-202-23"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-202-24" id="__codelineno-202-24" name="__codelineno-202-24"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-202-25" id="__codelineno-202-25" name="__codelineno-202-25"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-202-26" id="__codelineno-202-26" name="__codelineno-202-26"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-202-27" id="__codelineno-202-27" name="__codelineno-202-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-202-28" id="__codelineno-202-28" name="__codelineno-202-28"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.dart</span><pre><span></span><code><a href="#__codelineno-203-1" id="__codelineno-203-1" name="__codelineno-203-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-203-2" id="__codelineno-203-2" name="__codelineno-203-2"></a><span class="n">List</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">randomNumbers</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-203-3" id="__codelineno-203-3" name="__codelineno-203-3"></a><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">List</span><span class="p">.</span><span class="n">filled</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">);</span>
|
||
<a href="#__codelineno-203-4" id="__codelineno-203-4" name="__codelineno-203-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-203-5" id="__codelineno-203-5" name="__codelineno-203-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-203-6" id="__codelineno-203-6" name="__codelineno-203-6"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-203-7" id="__codelineno-203-7" name="__codelineno-203-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-203-8" id="__codelineno-203-8" name="__codelineno-203-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-203-9" id="__codelineno-203-9" name="__codelineno-203-9"></a><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">shuffle</span><span class="p">();</span>
|
||
<a href="#__codelineno-203-10" id="__codelineno-203-10" name="__codelineno-203-10"></a>
|
||
<a href="#__codelineno-203-11" id="__codelineno-203-11" name="__codelineno-203-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-203-12" id="__codelineno-203-12" name="__codelineno-203-12"></a><span class="p">}</span>
|
||
<a href="#__codelineno-203-13" id="__codelineno-203-13" name="__codelineno-203-13"></a>
|
||
<a href="#__codelineno-203-14" id="__codelineno-203-14" name="__codelineno-203-14"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-203-15" id="__codelineno-203-15" name="__codelineno-203-15"></a><span class="kt">int</span><span class="w"> </span><span class="n">findOne</span><span class="p">(</span><span class="n">List</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-203-16" id="__codelineno-203-16" name="__codelineno-203-16"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-203-17" id="__codelineno-203-17" name="__codelineno-203-17"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-203-18" id="__codelineno-203-18" name="__codelineno-203-18"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-203-19" id="__codelineno-203-19" name="__codelineno-203-19"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-203-20" id="__codelineno-203-20" name="__codelineno-203-20"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-203-21" id="__codelineno-203-21" name="__codelineno-203-21"></a>
|
||
<a href="#__codelineno-203-22" id="__codelineno-203-22" name="__codelineno-203-22"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="m">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-203-23" id="__codelineno-203-23" name="__codelineno-203-23"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.rs</span><pre><span></span><code><a href="#__codelineno-204-1" id="__codelineno-204-1" name="__codelineno-204-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-204-2" id="__codelineno-204-2" name="__codelineno-204-2"></a><span class="k">fn</span><span class="w"> </span><span class="nf">random_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Vec</span><span class="o"><</span><span class="kt">i32</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-204-3" id="__codelineno-204-3" name="__codelineno-204-3"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-204-4" id="__codelineno-204-4" name="__codelineno-204-4"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="o">..=</span><span class="n">n</span><span class="p">).</span><span class="n">collect</span><span class="p">::</span><span class="o"><</span><span class="nb">Vec</span><span class="o"><</span><span class="kt">i32</span><span class="o">>></span><span class="p">();</span>
|
||
<a href="#__codelineno-204-5" id="__codelineno-204-5" name="__codelineno-204-5"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-204-6" id="__codelineno-204-6" name="__codelineno-204-6"></a><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">shuffle</span><span class="p">(</span><span class="o">&</span><span class="k">mut</span><span class="w"> </span><span class="n">thread_rng</span><span class="p">());</span>
|
||
<a href="#__codelineno-204-7" id="__codelineno-204-7" name="__codelineno-204-7"></a><span class="w"> </span><span class="n">nums</span>
|
||
<a href="#__codelineno-204-8" id="__codelineno-204-8" name="__codelineno-204-8"></a><span class="p">}</span>
|
||
<a href="#__codelineno-204-9" id="__codelineno-204-9" name="__codelineno-204-9"></a>
|
||
<a href="#__codelineno-204-10" id="__codelineno-204-10" name="__codelineno-204-10"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-204-11" id="__codelineno-204-11" name="__codelineno-204-11"></a><span class="k">fn</span><span class="w"> </span><span class="nf">find_one</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="p">[</span><span class="kt">i32</span><span class="p">])</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Option</span><span class="o"><</span><span class="kt">usize</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-204-12" id="__codelineno-204-12" name="__codelineno-204-12"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="n">nums</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-204-13" id="__codelineno-204-13" name="__codelineno-204-13"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-204-14" id="__codelineno-204-14" name="__codelineno-204-14"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-204-15" id="__codelineno-204-15" name="__codelineno-204-15"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-204-16" id="__codelineno-204-16" name="__codelineno-204-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Some</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
|
||
<a href="#__codelineno-204-17" id="__codelineno-204-17" name="__codelineno-204-17"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-204-18" id="__codelineno-204-18" name="__codelineno-204-18"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-204-19" id="__codelineno-204-19" name="__codelineno-204-19"></a><span class="w"> </span><span class="nb">None</span>
|
||
<a href="#__codelineno-204-20" id="__codelineno-204-20" name="__codelineno-204-20"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.c</span><pre><span></span><code><a href="#__codelineno-205-1" id="__codelineno-205-1" name="__codelineno-205-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-205-2" id="__codelineno-205-2" name="__codelineno-205-2"></a><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="nf">randomNumbers</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-205-3" id="__codelineno-205-3" name="__codelineno-205-3"></a><span class="w"> </span><span class="c1">// 分配堆積區記憶體(建立一維可變長陣列:陣列中元素數量為 n ,元素型別為 int )</span>
|
||
<a href="#__codelineno-205-4" id="__codelineno-205-4" name="__codelineno-205-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">));</span>
|
||
<a href="#__codelineno-205-5" id="__codelineno-205-5" name="__codelineno-205-5"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-205-6" id="__codelineno-205-6" name="__codelineno-205-6"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-205-7" id="__codelineno-205-7" name="__codelineno-205-7"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<a href="#__codelineno-205-8" id="__codelineno-205-8" name="__codelineno-205-8"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-205-9" id="__codelineno-205-9" name="__codelineno-205-9"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-205-10" id="__codelineno-205-10" name="__codelineno-205-10"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-205-11" id="__codelineno-205-11" name="__codelineno-205-11"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">()</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
|
||
<a href="#__codelineno-205-12" id="__codelineno-205-12" name="__codelineno-205-12"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
|
||
<a href="#__codelineno-205-13" id="__codelineno-205-13" name="__codelineno-205-13"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
|
||
<a href="#__codelineno-205-14" id="__codelineno-205-14" name="__codelineno-205-14"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span><span class="p">;</span>
|
||
<a href="#__codelineno-205-15" id="__codelineno-205-15" name="__codelineno-205-15"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-205-16" id="__codelineno-205-16" name="__codelineno-205-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||
<a href="#__codelineno-205-17" id="__codelineno-205-17" name="__codelineno-205-17"></a><span class="p">}</span>
|
||
<a href="#__codelineno-205-18" id="__codelineno-205-18" name="__codelineno-205-18"></a>
|
||
<a href="#__codelineno-205-19" id="__codelineno-205-19" name="__codelineno-205-19"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-205-20" id="__codelineno-205-20" name="__codelineno-205-20"></a><span class="kt">int</span><span class="w"> </span><span class="nf">findOne</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-205-21" id="__codelineno-205-21" name="__codelineno-205-21"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-205-22" id="__codelineno-205-22" name="__codelineno-205-22"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-205-23" id="__codelineno-205-23" name="__codelineno-205-23"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-205-24" id="__codelineno-205-24" name="__codelineno-205-24"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-205-25" id="__codelineno-205-25" name="__codelineno-205-25"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
|
||
<a href="#__codelineno-205-26" id="__codelineno-205-26" name="__codelineno-205-26"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-205-27" id="__codelineno-205-27" name="__codelineno-205-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span>
|
||
<a href="#__codelineno-205-28" id="__codelineno-205-28" name="__codelineno-205-28"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.kt</span><pre><span></span><code><a href="#__codelineno-206-1" id="__codelineno-206-1" name="__codelineno-206-1"></a><span class="cm">/* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */</span>
|
||
<a href="#__codelineno-206-2" id="__codelineno-206-2" name="__codelineno-206-2"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">randomNumbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="n">Array</span><span class="o"><</span><span class="kt">Int?</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-206-3" id="__codelineno-206-3" name="__codelineno-206-3"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IntArray</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-206-4" id="__codelineno-206-4" name="__codelineno-206-4"></a><span class="w"> </span><span class="c1">// 生成陣列 nums = { 1, 2, 3, ..., n }</span>
|
||
<a href="#__codelineno-206-5" id="__codelineno-206-5" name="__codelineno-206-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-206-6" id="__codelineno-206-6" name="__codelineno-206-6"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span>
|
||
<a href="#__codelineno-206-7" id="__codelineno-206-7" name="__codelineno-206-7"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-206-8" id="__codelineno-206-8" name="__codelineno-206-8"></a><span class="w"> </span><span class="c1">// 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-206-9" id="__codelineno-206-9" name="__codelineno-206-9"></a><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">shuffle</span><span class="p">()</span>
|
||
<a href="#__codelineno-206-10" id="__codelineno-206-10" name="__codelineno-206-10"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arrayOfNulls</span><span class="o"><</span><span class="kt">Int</span><span class="o">></span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-206-11" id="__codelineno-206-11" name="__codelineno-206-11"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">0.</span><span class="p">.</span><span class="o"><</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-206-12" id="__codelineno-206-12" name="__codelineno-206-12"></a><span class="w"> </span><span class="n">res</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span>
|
||
<a href="#__codelineno-206-13" id="__codelineno-206-13" name="__codelineno-206-13"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-206-14" id="__codelineno-206-14" name="__codelineno-206-14"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">res</span>
|
||
<a href="#__codelineno-206-15" id="__codelineno-206-15" name="__codelineno-206-15"></a><span class="p">}</span>
|
||
<a href="#__codelineno-206-16" id="__codelineno-206-16" name="__codelineno-206-16"></a>
|
||
<a href="#__codelineno-206-17" id="__codelineno-206-17" name="__codelineno-206-17"></a><span class="cm">/* 查詢陣列 nums 中數字 1 所在索引 */</span>
|
||
<a href="#__codelineno-206-18" id="__codelineno-206-18" name="__codelineno-206-18"></a><span class="kd">fun</span><span class="w"> </span><span class="nf">findOne</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="n">Array</span><span class="o"><</span><span class="kt">Int?</span><span class="o">></span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-206-19" id="__codelineno-206-19" name="__codelineno-206-19"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">indices</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<a href="#__codelineno-206-20" id="__codelineno-206-20" name="__codelineno-206-20"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-206-21" id="__codelineno-206-21" name="__codelineno-206-21"></a><span class="w"> </span><span class="c1">// 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-206-22" id="__codelineno-206-22" name="__codelineno-206-22"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">1</span><span class="p">)</span>
|
||
<a href="#__codelineno-206-23" id="__codelineno-206-23" name="__codelineno-206-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span>
|
||
<a href="#__codelineno-206-24" id="__codelineno-206-24" name="__codelineno-206-24"></a><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-206-25" id="__codelineno-206-25" name="__codelineno-206-25"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="m">1</span>
|
||
<a href="#__codelineno-206-26" id="__codelineno-206-26" name="__codelineno-206-26"></a><span class="p">}</span>
|
||
</code></pre></div>
|
||
</div>
|
||
<div class="tabbed-block">
|
||
<div class="highlight"><span class="filename">worst_best_time_complexity.rb</span><pre><span></span><code><a href="#__codelineno-207-1" id="__codelineno-207-1" name="__codelineno-207-1"></a><span class="c1">### 生成一個陣列,元素為: 1, 2, ..., n ,順序被打亂 ###</span>
|
||
<a href="#__codelineno-207-2" id="__codelineno-207-2" name="__codelineno-207-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">random_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<a href="#__codelineno-207-3" id="__codelineno-207-3" name="__codelineno-207-3"></a><span class="w"> </span><span class="c1"># 生成陣列 nums =: 1, 2, 3, ..., n</span>
|
||
<a href="#__codelineno-207-4" id="__codelineno-207-4" name="__codelineno-207-4"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">|</span><span class="n">i</span><span class="o">|</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span>
|
||
<a href="#__codelineno-207-5" id="__codelineno-207-5" name="__codelineno-207-5"></a><span class="w"> </span><span class="c1"># 隨機打亂陣列元素</span>
|
||
<a href="#__codelineno-207-6" id="__codelineno-207-6" name="__codelineno-207-6"></a><span class="w"> </span><span class="n">nums</span><span class="o">.</span><span class="n">shuffle!</span>
|
||
<a href="#__codelineno-207-7" id="__codelineno-207-7" name="__codelineno-207-7"></a><span class="k">end</span>
|
||
<a href="#__codelineno-207-8" id="__codelineno-207-8" name="__codelineno-207-8"></a>
|
||
<a href="#__codelineno-207-9" id="__codelineno-207-9" name="__codelineno-207-9"></a><span class="c1">### 查詢陣列 nums 中數字 1 所在索引 ###</span>
|
||
<a href="#__codelineno-207-10" id="__codelineno-207-10" name="__codelineno-207-10"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_one</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
|
||
<a href="#__codelineno-207-11" id="__codelineno-207-11" name="__codelineno-207-11"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">...</span><span class="n">nums</span><span class="o">.</span><span class="n">length</span>
|
||
<a href="#__codelineno-207-12" id="__codelineno-207-12" name="__codelineno-207-12"></a><span class="w"> </span><span class="c1"># 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1)</span>
|
||
<a href="#__codelineno-207-13" id="__codelineno-207-13" name="__codelineno-207-13"></a><span class="w"> </span><span class="c1"># 當元素 1 在陣列尾部時,達到最差時間複雜度 O(n)</span>
|
||
<a href="#__codelineno-207-14" id="__codelineno-207-14" name="__codelineno-207-14"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span>
|
||
<a href="#__codelineno-207-15" id="__codelineno-207-15" name="__codelineno-207-15"></a><span class="w"> </span><span class="k">end</span>
|
||
<a href="#__codelineno-207-16" id="__codelineno-207-16" name="__codelineno-207-16"></a>
|
||
<a href="#__codelineno-207-17" id="__codelineno-207-17" name="__codelineno-207-17"></a><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||
<a href="#__codelineno-207-18" id="__codelineno-207-18" name="__codelineno-207-18"></a><span class="k">end</span>
|
||
</code></pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<details class="pythontutor">
|
||
<summary>視覺化執行</summary>
|
||
<p><div style="height: 549px; width: 100%;"><iframe class="pythontutor-iframe" src="https://pythontutor.com/iframe-embed.html#code=import%20random%0A%0Adef%20random_numbers%28n%3A%20int%29%20-%3E%20list%5Bint%5D%3A%0A%20%20%20%20%22%22%22%E7%94%9F%E6%88%90%E4%B8%80%E5%80%8B%E9%99%A3%E5%88%97%EF%BC%8C%E5%85%83%E7%B4%A0%E7%82%BA%3A%201%2C%202%2C%20...%2C%20n%20%EF%BC%8C%E9%A0%86%E5%BA%8F%E8%A2%AB%E6%89%93%E4%BA%82%22%22%22%0A%20%20%20%20%23%20%E7%94%9F%E6%88%90%E9%99%A3%E5%88%97%20nums%20%3D%3A%201%2C%202%2C%203%2C%20...%2C%20n%0A%20%20%20%20nums%20%3D%20%5Bi%20for%20i%20in%20range%281%2C%20n%20%2B%201%29%5D%0A%20%20%20%20%23%20%E9%9A%A8%E6%A9%9F%E6%89%93%E4%BA%82%E9%99%A3%E5%88%97%E5%85%83%E7%B4%A0%0A%20%20%20%20random.shuffle%28nums%29%0A%20%20%20%20return%20nums%0A%0Adef%20find_one%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%9F%A5%E8%A9%A2%E9%99%A3%E5%88%97%20nums%20%E4%B8%AD%E6%95%B8%E5%AD%97%201%20%E6%89%80%E5%9C%A8%E7%B4%A2%E5%BC%95%22%22%22%0A%20%20%20%20for%20i%20in%20range%28len%28nums%29%29%3A%0A%20%20%20%20%20%20%20%20%23%20%E7%95%B6%E5%85%83%E7%B4%A0%201%20%E5%9C%A8%E9%99%A3%E5%88%97%E9%A0%AD%E9%83%A8%E6%99%82%EF%BC%8C%E9%81%94%E5%88%B0%E6%9C%80%E4%BD%B3%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%20O%281%29%0A%20%20%20%20%20%20%20%20%23%20%E7%95%B6%E5%85%83%E7%B4%A0%201%20%E5%9C%A8%E9%99%A3%E5%88%97%E5%B0%BE%E9%83%A8%E6%99%82%EF%BC%8C%E9%81%94%E5%88%B0%E6%9C%80%E5%B7%AE%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%20O%28n%29%0A%20%20%20%20%20%20%20%20if%20nums%5Bi%5D%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%0A%20%20%20%20return%20-1%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%2010%0A%20%20%20%20nums%20%3D%20random_numbers%28n%29%0A%20%20%20%20index%20%3D%20find_one%28nums%29%0A%20%20%20%20print%28%22%5Cn%E9%99%A3%E5%88%97%20%5B%201%2C%202%2C%20...%2C%20n%20%5D%20%E8%A2%AB%E6%89%93%E4%BA%82%E5%BE%8C%20%3D%22%2C%20nums%29%0A%20%20%20%20print%28%22%E6%95%B8%E5%AD%97%201%20%E7%9A%84%E7%B4%A2%E5%BC%95%E7%82%BA%22%2C%20index%29&codeDivHeight=472&codeDivWidth=350&cumulative=false&curInstr=25&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" title="視覺化執行"> </iframe></div>
|
||
<div style="margin-top: 5px;"><a href="https://pythontutor.com/iframe-embed.html#code=import%20random%0A%0Adef%20random_numbers%28n%3A%20int%29%20-%3E%20list%5Bint%5D%3A%0A%20%20%20%20%22%22%22%E7%94%9F%E6%88%90%E4%B8%80%E5%80%8B%E9%99%A3%E5%88%97%EF%BC%8C%E5%85%83%E7%B4%A0%E7%82%BA%3A%201%2C%202%2C%20...%2C%20n%20%EF%BC%8C%E9%A0%86%E5%BA%8F%E8%A2%AB%E6%89%93%E4%BA%82%22%22%22%0A%20%20%20%20%23%20%E7%94%9F%E6%88%90%E9%99%A3%E5%88%97%20nums%20%3D%3A%201%2C%202%2C%203%2C%20...%2C%20n%0A%20%20%20%20nums%20%3D%20%5Bi%20for%20i%20in%20range%281%2C%20n%20%2B%201%29%5D%0A%20%20%20%20%23%20%E9%9A%A8%E6%A9%9F%E6%89%93%E4%BA%82%E9%99%A3%E5%88%97%E5%85%83%E7%B4%A0%0A%20%20%20%20random.shuffle%28nums%29%0A%20%20%20%20return%20nums%0A%0Adef%20find_one%28nums%3A%20list%5Bint%5D%29%20-%3E%20int%3A%0A%20%20%20%20%22%22%22%E6%9F%A5%E8%A9%A2%E9%99%A3%E5%88%97%20nums%20%E4%B8%AD%E6%95%B8%E5%AD%97%201%20%E6%89%80%E5%9C%A8%E7%B4%A2%E5%BC%95%22%22%22%0A%20%20%20%20for%20i%20in%20range%28len%28nums%29%29%3A%0A%20%20%20%20%20%20%20%20%23%20%E7%95%B6%E5%85%83%E7%B4%A0%201%20%E5%9C%A8%E9%99%A3%E5%88%97%E9%A0%AD%E9%83%A8%E6%99%82%EF%BC%8C%E9%81%94%E5%88%B0%E6%9C%80%E4%BD%B3%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%20O%281%29%0A%20%20%20%20%20%20%20%20%23%20%E7%95%B6%E5%85%83%E7%B4%A0%201%20%E5%9C%A8%E9%99%A3%E5%88%97%E5%B0%BE%E9%83%A8%E6%99%82%EF%BC%8C%E9%81%94%E5%88%B0%E6%9C%80%E5%B7%AE%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%20O%28n%29%0A%20%20%20%20%20%20%20%20if%20nums%5Bi%5D%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%0A%20%20%20%20return%20-1%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20n%20%3D%2010%0A%20%20%20%20nums%20%3D%20random_numbers%28n%29%0A%20%20%20%20index%20%3D%20find_one%28nums%29%0A%20%20%20%20print%28%22%5Cn%E9%99%A3%E5%88%97%20%5B%201%2C%202%2C%20...%2C%20n%20%5D%20%E8%A2%AB%E6%89%93%E4%BA%82%E5%BE%8C%20%3D%22%2C%20nums%29%0A%20%20%20%20print%28%22%E6%95%B8%E5%AD%97%201%20%E7%9A%84%E7%B4%A2%E5%BC%95%E7%82%BA%22%2C%20index%29&codeDivHeight=800&codeDivWidth=600&cumulative=false&curInstr=25&heapPrimitives=nevernest&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false" rel="noopener noreferrer" target="_blank">全螢幕觀看 ></a></div></p>
|
||
</details>
|
||
<p>值得說明的是,我們在實際中很少使用最佳時間複雜度,因為通常只有在很小機率下才能達到,可能會帶來一定的誤導性。<strong>而最差時間複雜度更為實用,因為它給出了一個效率安全值</strong>,讓我們可以放心地使用演算法。</p>
|
||
<p>從上述示例可以看出,最差時間複雜度和最佳時間複雜度只出現於“特殊的資料分佈”,這些情況的出現機率可能很小,並不能真實地反映演算法執行效率。相比之下,<strong>平均時間複雜度可以體現演算法在隨機輸入資料下的執行效率</strong>,用 <span class="arithmatex">\(\Theta\)</span> 記號來表示。</p>
|
||
<p>對於部分演算法,我們可以簡單地推算出隨機資料分佈下的平均情況。比如上述示例,由於輸入陣列是被打亂的,因此元素 <span class="arithmatex">\(1\)</span> 出現在任意索引的機率都是相等的,那麼演算法的平均迴圈次數就是陣列長度的一半 <span class="arithmatex">\(n / 2\)</span> ,平均時間複雜度為 <span class="arithmatex">\(\Theta(n / 2) = \Theta(n)\)</span> 。</p>
|
||
<p>但對於較為複雜的演算法,計算平均時間複雜度往往比較困難,因為很難分析出在資料分佈下的整體數學期望。在這種情況下,我們通常使用最差時間複雜度作為演算法效率的評判標準。</p>
|
||
<div class="admonition question">
|
||
<p class="admonition-title">為什麼很少看到 <span class="arithmatex">\(\Theta\)</span> 符號?</p>
|
||
<p>可能由於 <span class="arithmatex">\(O\)</span> 符號過於朗朗上口,因此我們常常使用它來表示平均時間複雜度。但從嚴格意義上講,這種做法並不規範。在本書和其他資料中,若遇到類似“平均時間複雜度 <span class="arithmatex">\(O(n)\)</span>”的表述,請將其直接理解為 <span class="arithmatex">\(\Theta(n)\)</span> 。</p>
|
||
</div>
|
||
<!-- Source file information -->
|
||
<!-- Was this page helpful? -->
|
||
<!-- Previous and next pages link -->
|
||
<nav aria-label="頁脚" class="md-footer__inner md-grid">
|
||
<!-- Link to previous page -->
|
||
<a aria-label="上一頁: 2.2 &nbsp; 迭代與遞迴" class="md-footer__link md-footer__link--prev" href="../iteration_and_recursion/" rel="prev">
|
||
<div class="md-footer__button md-icon">
|
||
<svg class="lucide lucide-arrow-left" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 19-7-7 7-7M19 12H5"></path></svg>
|
||
</div>
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
上一頁
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
2.2 迭代與遞迴
|
||
</div>
|
||
</div>
|
||
</a>
|
||
<!-- Link to next page -->
|
||
<a aria-label="下一頁: 2.4 &nbsp; 空間複雜度" class="md-footer__link md-footer__link--next" href="../space_complexity/" rel="next">
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
下一頁
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
2.4 空間複雜度
|
||
</div>
|
||
</div>
|
||
<div class="md-footer__button md-icon">
|
||
<svg class="lucide lucide-arrow-right" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12h14M12 5l7 7-7 7"></path></svg>
|
||
</div>
|
||
</a>
|
||
</nav>
|
||
<!-- Comment system -->
|
||
<!-- Check-in button above comments -->
|
||
<h5 align="center" id="__comments">歡迎在評論區留下你的見解、問題或建議</h5>
|
||
<!-- Insert generated snippet here -->
|
||
<script async="" crossorigin="anonymous" data-category="Announcements" data-category-id="DIC_kwDOIXtSq84CSZk_" data-emit-metadata="1" data-input-position="top" data-lang="zh-TW" data-mapping="pathname" data-reactions-enabled="1" data-repo="krahets/hello-algo" data-repo-id="R_kgDOIXtSqw" data-strict="1" data-theme="light" src="https://giscus.app/client.js">
|
||
</script>
|
||
<!-- Synchronize Giscus theme with palette -->
|
||
<script>
|
||
var giscus = document.querySelector("script[src*=giscus]")
|
||
|
||
function getGiscusTheme() {
|
||
var palette = __md_get("__palette")
|
||
var isDark = palette && typeof palette.color === "object" && palette.color.scheme === "slate"
|
||
return isDark ? "noborder_dark" : "light"
|
||
}
|
||
|
||
/* Set palette on initial load */
|
||
giscus.setAttribute("data-theme", getGiscusTheme())
|
||
|
||
/* The Giscus client creates the iframe asynchronously with an English title. */
|
||
;(function() {
|
||
function labelCommentsFrame() {
|
||
var frame = document.querySelector("iframe.giscus-frame")
|
||
if (!frame) return false
|
||
frame.setAttribute("title", "評論")
|
||
return true
|
||
}
|
||
if (labelCommentsFrame()) return
|
||
var observer = new MutationObserver(function() {
|
||
if (labelCommentsFrame()) observer.disconnect()
|
||
})
|
||
observer.observe(giscus.parentElement, { childList: true, subtree: true })
|
||
})()
|
||
|
||
/* Register event handlers after documented loaded */
|
||
document.addEventListener("DOMContentLoaded", function() {
|
||
var ref = document.querySelector("[data-md-component=palette]")
|
||
if (!ref) return
|
||
ref.addEventListener("change", function() {
|
||
var theme = getGiscusTheme()
|
||
|
||
/* Instruct Giscus to change theme */
|
||
var frame = document.querySelector(".giscus-frame")
|
||
if (!frame) return
|
||
frame.contentWindow.postMessage(
|
||
{ giscus: { setConfig: { theme } } },
|
||
"https://giscus.app"
|
||
)
|
||
})
|
||
})
|
||
</script>
|
||
</article>
|
||
</div>
|
||
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
</main>
|
||
<footer class="md-footer">
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
<div class="md-copyright__highlight">
|
||
Copyright © 2026 krahets<br/>The website content is licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a>
|
||
</div>
|
||
</div>
|
||
<div class="md-social">
|
||
<a class="md-social__link" href="https://github.com/krahets" rel="noopener" target="_blank" title="github.com">
|
||
<svg viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2" fill="currentColor"></path></svg>
|
||
</a>
|
||
<a class="md-social__link" href="https://twitter.com/krahets" rel="noopener" target="_blank" title="twitter.com">
|
||
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M357.2 48h70.6L273.6 224.2 455 464H313L201.7 318.6 74.5 464H3.8l164.9-188.5L-5.2 48h145.6l100.5 132.9zm-24.8 373.8h39.1L119.1 88h-42z" fill="currentColor"></path></svg>
|
||
</a>
|
||
<a class="md-social__link" href="https://leetcode.cn/u/jyd/" rel="noopener" target="_blank" title="leetcode.cn">
|
||
<svg viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc.--><path d="M360.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m64.6 136.1c-12.5 12.5-12.5 32.8 0 45.3l73.4 73.4-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0zm-274.7 0c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l73.3-73.4c12.5-12.5 12.5-32.8 0-45.3z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
<script id="__config" type="application/json">{"annotate":null,"base":"../../","features":["content.action.edit","content.code.annotate","content.code.copy","content.tabs.link","content.tooltips","navigation.indexes","navigation.tracking","search.highlight","search.share","search.suggest","toc.follow"],"search":"../../assets/javascripts/workers/search.b6b7e04f.min.js","tags":null,"translations":{"clipboard.copied":"已拷貝","clipboard.copy":"拷貝","search.result.more.one":"此頁尚有 1 個符合的項目","search.result.more.other":"此頁尚有 # 個符合的項目","search.result.none":"沒有找到符合條件的結果","search.result.one":"找到 1 个符合條件的結果","search.result.other":"找到 # 個符合條件的結果","search.result.placeholder":"鍵入以開始檢索","search.result.term.missing":"缺失","select.version":"選擇版本"},"version":null}</script>
|
||
<script src="../../assets/javascripts/bundle.d8fb2ea5e0f509d0b4f4d0f8a450bc3780c07b9dcd2ec26cdd40f43bc8806ce2.min.js"></script>
|
||
<script src="../../javascripts/mathjax.js"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js"></script>
|
||
<script src="../../javascripts/animation_player.js"></script>
|
||
<script defer="" src="/assets/figure-svg/js/bcdea376f01bc2bc0cac7c6c.js"></script><script defer="" src="/assets/figure-svg/js/e84f59519170c0f5ef238548.js"></script><script defer="" src="/assets/figure-svg/js/99a707e9f0a14d8280f16808.js"></script><script defer="" src="/assets/figure-svg/js/855fb5bb73c22cf5c2cea474.js"></script></body>
|
||
</html> |