>> DAVID MALAN：好的。
我們回來了。
因此，在規劃這一領域是什麼 我以為我們會做的是一個事物的組合。
一，做一點點 東西動手，
雖然使用的是更好玩 編程environment--
一個是示範的 正是種思路
我們一直在談論， 而多了幾分正式掛牌。
二，看一些 更多的技術途徑
一個程序員實際上解決 像搜索問題的問題
我們看了前 也有更根本
排序的有趣的問題。
>> 我們剛剛從一開始走假設 這是電話本進行了排序，
但僅憑這實際上是種 硬問題有許多不同的方式
解決它。
因此，我們將使用這些作為 一類問題
代表性的東西， 可能一般的解決。
然後我們再說吧 大約在一些細節什麼
稱為數據structures-- 奇的方法類似鍊錶
和哈希表和樹木 一個程序員實際上
使用，一般使用 在白板上畫
的畫面是什麼，他或她 設想用於實施
一些的軟件。
>> 因此，讓我們做動手部分第一。
因此，只要把你的手臟了 環境調用scratch.mit.edu。
這是我們使用的工具 在我們的本科班。
儘管它的設計 適合12歲及以上，
我們將其用於向上 那相當多的一部分
因為它是一個不錯的，好玩的 學習圖形化的方式
少了一些有關編程。
讓頭部的網址，在那裡你 應該看到一個頁面很喜歡​​這個，
並直接點擊 在右上角加入划痕
並選擇一個用戶名和 密碼並最終讓自己
一個account-- scratch.mit.edu。
我以為我會以此為 機會首次證明這一點。
一個問題在休息的時候來到了 什麼代碼實際上樣子。
和我們談話 關於C在休息的時候，
在particular--特別是 在一個較舊的語言較低的水平。
而我只是做了一個快速 谷歌搜索找到的C代碼
對於二進制搜索，算法，我們 用於在先檢索的電話簿。
這個特殊的例子，當然， 不搜索電話簿。
它只是搜索一大堆 號碼在計算機的存儲器中。
但是，如果你想只得到一個視覺 什麼實際的編程意識
語言的樣子，看起來 有點像這樣。
因此，這20多名， 30行左右的代碼，
但談話我們 分別有過破發
是關於如何真正 被演變成零和一
如果你不能只恢復了 處理和從零和一去
回代碼。
>> 不幸的是，該方法 如此變革
這是一個很多談何容易。
我說乾就幹，居然變成 該程序，二進制搜索，
成的一個方式的零和一 程序調用編譯器，我
碰巧的權利在這裡我的Mac上。
如果你看一下屏幕 在這裡，重點明確
這些中間六列只， 你會看到只有零和的。
而這些都是在零和一的 正是撰寫的搜索程序。
>> 等五個位的每個塊， 零和一的每個字節在這裡，
代表一些指令 通常是計算機的內部。
而事實上，如果你聽說過 營銷口號“Intel Inside”的 - 即，
當然，只是意味著你有一個 電腦內的英特爾CPU或大腦。
而這意味著什麼是一個CPU是 你有一個指令集，
可以這麼說。
>> 世界上每一個CPU，很多 它們由英特爾這些天發，
了解有限 指令數。
而這些指令是如此之低的水平 因為這兩個數字加在一起，
乘這兩個數字加在一起， 從這裡移動這一塊的數據
這裡在內存中，保存此 從這裡的信息存儲器到這裡，
所以forth--非常非常 低的水平，幾乎電子信息。
但與那些數學 操作加上
與我們前面討論的， 數據的表示
作為零和的，可 你建立起來的一切
一台計算機今天能做的，無論是 它的文本，圖形，音樂，
或以其他方式。
>> 所以這是很容易得到 迷失在快速的雜草。
而且還有很多的 語法挑戰
因此，如果你做的最簡單， 錯別字沒有方案的愚蠢
將任何工作。
因此，而不是使用 語言如C今天上午，
我認為這將是 更多的樂趣，真正做到
一些更直觀，這 而專為兒童設計
實際上是一個完美的表現 實際編程
language--恰好 使用圖片代替文字
代表這些想法。
>> 所以一旦你確實有一個 帳戶scratch.mit.edu，
點擊創建按鈕 在左上方的網站。
你應該看到這樣一個環境 一，我要看到我的屏幕上
這裡。
我們會花一點點 時間位在這裡踢球。
讓我們看看，如果我們不能全部解決一些 問題一起以下述方式。
>> 那麼，您會在此看到 environment--實際上只是讓
我停下來。
有沒有人不在這裡？
不在這裡？
好。
所以讓我指出一些 這種環境的特點。
>> 所以在屏幕的左上角，我們 有划痕的舞台，可以這麼說。
刮不僅是名稱 此編程語言;
這也是貓的名稱 您可以通過在橙色默認情況下有看到。
他是在一個階段，所以 就像我描述
龜早些時候在一個被 長方形的白板環境。
這種貓的世界完全局限 該矩形向上頂在那裡。
>> 同時，在右側 這裡右手邊，它的
只是一個腳本區， 如果你將空白的石​​板。
這就是我們要去的地方寫 我們在短短的時刻節目。
和基石，我們將 用它來寫這個program--拼圖
件，如果你will--是 那些在這裡在中間，
他們正在分類 按功能。
所以，舉例來說，我要繼續前進 和展示的這些的至少一種。
我要繼續前進，然後點擊 控制類別向上頂。
>> 因此，這些都是分類往上頂。
我要點擊控件類。
相反，我要單擊事件 類別中，最前面的一個往上頂。
如果你想沿著甚至跟隨 因為我們這樣做，你很歡迎。
我要單擊並拖動這個 第一個，“當綠旗點擊。”
然後，我會剛落 大約在我一張白紙的頂部。
>> 什麼是關於臨時不錯 是，這一塊拼圖，當
與其他拼圖互鎖 件，打算從字面上做
什麼樣的拼圖要說到做到。
因此，例如，臨時是右 現在在他的世界的中間。
我要繼續前進，並選擇 現在，讓我們說，運動類，
如果你想要做的 same--運動類別。
現在發現我有一個整體的 一堆拼圖這裡
他們說什麼，同樣，那種事。
而且我要繼續前進，拖放 降此舉塊就在這裡。
>> 並注意，一旦你得到 接近“綠色環保標誌的底部
點擊“按鈕，通知 怎麼會出現一條白線，
就好像它幾乎 磁性，它想要去那裡。
剛鬆手，它會捕捉 一起和形狀將匹配。
現在你可以或許差不多 猜我們正在與這個部落格。
>> 如果你看一下划痕階段 在這裡，並期待它的頂部，
你會看到一個紅色的燈， 停車標誌和綠色標誌。
而且我要繼續前進 看著我的screen--
就一下，如果你能。
我要點擊 綠色環保標誌，現在，
他搬到這似乎是10個步驟 或10個像素，10個點，在屏幕上。
>> 所以也不那麼令人振奮， 但讓​​我求婚
甚至沒有教這個，就 用自己的自己intuition--讓利
我建議你找出如何 使刮走正確的掃尾階段。
讓他讓路的右側 屏幕，一路到右側。
讓我給你一個時刻 左右與搏鬥。
你可能想看看 在其他類別的塊。
好吧。
所以只是為了回顧一下，當我們有 綠旗點擊這裡
移動10步是 只有指令，每次我
點擊綠色旗幟，是怎麼回事？
嗯，這是運行我的程序。
所以，我能做到這一點 也許手動的10倍，
但這種感覺有點 有點hackish，可以這麼說，
因此我不是真的 解決這個問題。
我只是再次嘗試， 再，再而三
直到我有點意外 實現了指令
我提早出門來實現。
>> 但是，我們知道，從我們的 偽早些時候有
這一想法在循環編程， 一次又一次地做一些事情。
於是，我看到了一堆你 達到什麼一塊拼圖？
重複，直到。
因此，我們可以做一些 喜歡重複，直到。
你是怎麼重複，直到到底是什麼？
>> 好。
讓我去一個是 稍微簡單一些只是一瞬間。
讓我繼續前進，做到這一點。
請注意，你可能有 控制之下發現，
有這種重複塊，這 看起來並不像它的那麼大。
這裡沒有多少空間 這兩個黃色線之間。
但正如一些你可能有 注意，如果你拖放，
注意它是如何成長為填充形狀。
>> 你甚至可以塞進更多。
它只會保持增長，如果 拖動和懸停。
我不知道什麼是 最好在這裡，讓我們
我至少重複五次，為 實例，然後再回到舞台
然後單擊綠色標誌。
而現在發現它並不令人信服。
>> 現在，你們中的一些建議，如 維多利亞只是沒有，重複10次。
而且一般不 得到他所有的方式，
但不會有成為一個更強大的 方式不是隨意搞清楚
有多少動作做？
什麼可能是一個更好的塊 不是重複10次呢？
>> 是啊，為什麼不能做一些事情永遠不會消失？
現在讓我搬這個拼圖 裡面，遠離之一。
現在注意無論身在何處划痕 開始，他去的邊緣。
而值得慶幸的是麻省理工學院， 誰使划痕，只是
可以確保他從來沒有 完全消失。
你總是可以抓住他的尾巴。
>> 而就直觀， 為什麼他繼續前進？
這裡發生了什麼？
他似乎已經停止，但 那麼如果我拿起並拖動
他一直想要去那邊。
這是為什麼？
誠然，一台電腦是從字面上 要做到你告訴它做什麼。
所以，如果你告訴它前面做 永繼的事情，移動10步，
它會一直走下去，去 直到我打紅色停車標誌
和完全停止該程序。
>> 所以，即使你沒有 做到這一點，我怎麼會
使划痕移動速度更快 在屏幕上？
更多的步驟，對不對？
因此，而不是做10 在同一時間，我們為什麼不
繼續前進，改變中場休息 你會propose-- 50？
所以現在我要點擊綠色的 旗幟，而事實上，他也快。
>> 與此，當然，只是 動畫的一種表現。
什麼是動畫？
它只是顯示你的人一個 靜止圖像的一大堆真的，
真的，真的快。
所以，如果我們只告訴 他將更多的步驟，
我們只是有效果是 改變他在屏幕上
所有的更迅速的每單位時間的。
>> 現在，我提出的下一個挑戰 是讓他反彈的邊緣。
而且不知道什麼謎 件exist--因為它的罰款
如果你沒有得到的 在challenge--的階段是什麼
你想直觀地做什麼？
我們怎麼會有他的反彈和 特徵在於，在左右之間？
>> 是啊。
因此，我們需要某種 的條件下，與我們
似乎有條件句，所以要 控制類別下說話。
其中這些塊 我們可能希望？
是的，也許“的話，那麼”。
所以注意到黃色塊之中 我們這裡有，有這個“如果”
或本“的話，否則”塊會 讓我們做出決定，這樣做
或者這樣做。
甚至你可以嵌套這些 做多件事情。
或者，如果你已經不在這裡了呢， 繼續前進，傳感類
還有 - 讓我們看看它在這裡。
>> 那麼，什麼塊可能會有所幫助這裡 檢測如果他離開舞台？
是啊，注意到一些，這些塊 可參數化的，可以這麼說。
它們可以排序的定制，而不是 不像HTML昨天屬性，
其中，這些屬性樣的 自定義標籤的行為。
同樣在這裡，我可以抓住這個動人 塊與變化，提出這樣的問題，
你去摸鼠標 指針像游標
或者是你接觸的邊緣？
>> 因此，讓我進去，做到這一點。
我要縮小了一會兒。
讓我抓住這個拼圖 這裡，這一塊拼圖這一點，
我要去混雜 它們只是一瞬間。
我要遷此， 改變這感人的優勢，
我要去運動做到這一點。
因此，這裡有一些成分。
我想我已經得到了我想要的一切。
>> 會有人想提出我怎麼 可以連接這些也許從上到下
為了解決具有的問題 刮動右向左向右
左到右到左，每 時間剛剛反彈的牆？
我想要什麼呢？
哪個塊我應該連接到 “當綠旗點擊第一”？
>> 好了，讓我們開始用“永遠。”
善有善報，裡面下？
其他人。
OK，移動步驟。
好吧。
然後呢？
所以，那麼如果。
並注意，儘管它看起來 夾緊緊聯繫在一起，
它只會增長到填滿。
它只會跳，我想它。
>> 而我該怎麼放的 IF和當時的？
也許“是在觸摸的優勢。”
和通知，再次，它太大了 對於它，但它會增長到填滿。
然後轉15度？
多少度？
是啊，所以180會打滑 我所有的相反。
因此，讓我們看看，如果我得到這個權利。
讓我縮小。
>> 讓我拖刮了。
於是，他有點扭曲 現在，但是這很好。
我怎樣才能輕鬆重置他嗎？
我要稍微作弊。
所以我又增加 塊，僅僅是明確的。
我要他點90度 在默認情況下的權利，
所以我只是要告訴他 要做到這一點編程。
現在我們開始。
我們似乎都做到了。
這是一個有點古怪，因為 他走倒掛。
讓我們把一個錯誤。
這是一個錯誤。
一個錯誤是一個程序，一個錯誤 邏輯錯誤，我的人，做。
他為什麼會顛倒？
難道MIT搞砸了還是我？
>> 是的，我的意思是，這不是麻省理工學院 故障。他們給了我一塊拼圖
上面寫著轉的度的某個數。
而在維多利亞的建議， 我轉180度，
這是正確的直覺。
但轉彎180度，從字面上 裝置轉動180度，
這不是真的 我想要的東西，顯然。
因為至少他在 這個二維世界，
所以轉折點是真的 翻轉他倒掛。
>> 我可能要使用的塊 相反，根據你所看到的嗎？
我們如何解決這個問題？
是啊，所以我們可以點 在相反的方向。
而實際上，即使這 不會是不夠的，
因為我們只能硬編碼 指點左側或右側。
>> 你知道我們能做什麼？
看起來我們有一個 便利塊在這裡。
如果我放大，看到 這是我們喜歡在這裡？
所以它看起來像麻省理工學院有一個 抽象建在這裡。
此塊似乎是等效 到其它塊，複數？
>> 這一塊似乎是等同 以塊的這整個三人組
我們這裡有。
因此，原來我可以簡化我的 通過擺脫這一切的程序
而只是把這個在這裡。
而現在，他仍然是一個小 越野車，而現在的罰款。
我們把它留給定。
但我的計劃是，即使 簡單，而且這也
會代表 在programming--目標
是理想使你的代碼 簡單，盡可能緊湊，
同時仍然為 可讀越好。
你不想讓它盡量簡潔 這很難理解。
>> 但是請注意，我把它換成 三個塊一個，
那可以說是一件好事。
我抽象出來的概念 抽查不管你是
與僅一個街區的邊緣。
現在，我們可以有樂趣與此，事實上。
這不會加那麼多 知識產權價值，但頑皮的價值。
我要繼續前進 在這裡抓住這個聲音。
因此，讓我先走了，讓我 停了片刻程序。
我要記錄以下， 允許訪問我的麥克風。
>> 開始了。
哎喲。
讓我們再試試這個。
開始了。
好吧，我錄了錯誤的事情。
開始了。
哎喲。
好吧。
現在我需要擺脫的。
好吧。
>> 所以現在我有一個 只是記錄“哎喲”。
所以，現在我要去 進取，稱之為“哎喲”。
我要回去 我的劇本，現在
通知有該塊被稱為 播放聲音“喵喵”或播放聲音“哎喲”。
我要去拖這一點，並在 我應該把這個為滑稽的效果呢？
是啊，所以現在它是一種 越野車，因為現在這個block--
注意如何“如果邊緣， 反彈“是一種自成體系。
所以，我需要解決這個問題。
讓我繼續前進，做到這一點。
讓我擺脫這一點，回去 我們原來的，更深思熟慮
功能。
因此，“如果觸及邊緣，然後在”我想 轉，維多利亞提出，
180度。
那我要玩 聲“哎喲”呢？
>> 是啊，察覺到它的外 那個黃色的塊狀。
因此，這也將是一個 錯誤，但我已經注意到了這一點。
所以我要在這裡拖起來， 並注意現在是裡面的“如果”。
因此，“如果”這算哪門子 像臂形印跡
那唯一的打算 做什麼是它裡面。
所以，現在，如果我縮小在 annoying--的風險
>> 計算機：哎喲，哎喲，哎喲。
>> DAVID MALAN：它 只是永遠持續下去。
現在只是為了加快東西 在這裡，讓我去進取，不斷開拓，
讓我們say--讓我去一些 從類我自己的東西。
讓我開拓，讓我們說，這 一個接我們的教學研究員之一製成
兩三年前。
所以，有些人可能還記得 本場比賽從昔日的，
它實際上是顯著的。
儘管我們已經做了 最簡單的方案，現在，
讓我們來考慮一下這個 實際上看起來像。
讓我打比賽。
>> 因此，在這場比賽中，我們有一個 青蛙，並使用箭頭keys--
他花費的時間比我脖子了更大的步伐 我有過這種青蛙的控制。
其目標是跨越繁忙的獲得 路不跑入汽車。
而讓，如果我在這裡上去的see--，我 必須等待日誌被滾動。
這感覺就像一個錯誤。
這是怎樣的一個錯誤。
好吧。
我在這個位置， 在那裡，然後你繼續
走，直到你得到所有 青蛙的睡蓮。
現在，這可能看起來 所有的更複雜，
但讓​​我們嘗試突破 下來弱智
並口頭成其組件塊。
因此，有可能是一個謎 我們還沒有看到一塊
但是這響應按鍵， 的事情我按下鍵盤上。
>> 因此，有可能是某種 塊，上面寫著，如果key等於起來，
然後做Scratch--事 也許移動10步這種方式。
如果向下鍵，移動10步 這樣一來，或者左鍵，將10個步驟
通過這種方式，10的步驟。
我已經清楚地變成貓變成了青蛙。
所以，這只是其中 服裝，刮擦調用它 - 我們
剛剛導入的青蛙的圖片。
>> 還有什麼是怎麼回事？
什麼其他代碼行， 還有什麼其他拼圖
做布雷克，我們的教學老鄉， 在這個程序中使用，顯然是？
什麼是使一切move-- 什麼編程構建？
>> 運動，sure--所以 移動塊，肯定的。
而那是什麼舉動塊 裡面，最有可能的？
是的，有些類型的循環，也許 永遠阻止，也許是重複block--
重複，直到塊。
這就是什麼使日誌和 百合墊和其他一切舉動
來來回回。
這只是發生不休。
>> 為什麼有些車 移動速度比別人快？
什麼是關於這些程序有什麼不同？
是啊，也許他們中的一些正在服用 同時更多的步驟，其中一些
同時更少的步驟。
和視覺效果 快與慢。
>> 你認為發生了什麼？
當我得到了我的青蛙一路 在街對面，河
到蕸，東西 值得一提的事。
什麼，只要我這樣做了？
停了。
青蛙停了下來， 我得到了第二只青蛙。
那麼，什麼結構必須是 使用有什麼功能？
>> 是啊，所以有某種 “if”條件在那裡，太。
而事實證明out--我們沒有看到this-- 但有一個在那裡，其他塊
可以說，如果你是感人 屏幕上的另一件事，
如果你觸摸蕸，“然後”。
然後那個時候我們 使第二只青蛙出現。
因此，即使這場比賽肯定是 很過時，儘管乍一看
有這麼多的事情on--和布雷克 在兩分鐘內沒有掀起這件事，
大概花了他幾 小時創造這個遊戲
根據他的記憶或視頻 的昔日的版本吧。
但是，所有的這些小事 要在隔離的屏幕上
歸結為這些很簡單 constructs--運動或聲明
就像我們已經討論過，循環和 條件，這就是它。
還有一些其他鴿友功能。
其中有些是純粹的 審美或聲，
喜歡的聲音我只是打了。
但在大多數情況下，則 沒有這個語言，從無到有，
所有基本的 積木您
在C，Java的，JavaScript中， PHP和Ruby，Python和
和任意數量的其他語言。
關於臨時有問題嗎？
好吧。
因此，我們將不會在更深的下潛劃傷， 雖然你這個週末是受歡迎的，
特別是如果你有孩子，或 侄女和侄子這樣，
向他們介紹劃傷。
它實際上是一個奇妙的俏皮 環境，因為它的作者說，
天花板很高。
儘管我們開始 非常低層次的細節，
你真的可以做相當多的 用它，這或許是
正好一個示範。
>> 但是，讓我們現在過渡到一些 複雜的問題，如果你願意，
稱為“搜索”和 “排序”，更普遍。
我們有先前已經在這裡這款手機本書 另一只為discussion--
我們能夠搜索 更有效，因為
的一個顯著假設。
而僅僅是明確的，是什麼 假設是我做
通過這個電話本搜索時？
邁克·史密斯在 電話本，雖然我
將能夠處理 沒有他的情況下
還有，如果我只是提前停止。
書是按字母順序排列。
這是一個非常慷慨 假設，因為這
意味著someone--我有點 切割角，
像我，因為有人快 別人做了很多艱苦的工作對我來說。
>> 但是，如果手機 本書是不排序？
也許Verizon的偷懶，只是把 每個人的姓名和電話號碼在那裡
也許在順序他們 簽署了電話服務。
多少時間，它帶我 找一個像邁克·史密斯？
1000頁的電話book--多少 網頁做我不得不通過看？
>> 他們全部。
你是那種倒霉。
你從字面上來看看每 如果電話簿只是頁面
隨機排序。
你可能會得到幸運，找到邁克 在第一頁上，因為他
是第一個客戶 訂購電話服務。
但他可能是最後一次了。
>> 所以隨機順序並不好。
因此，假設我們要排序 電話簿或一般類型的數據
我們已經給出。
我們怎樣才能做到這一點？
>> 好吧，讓我試試 這裡一個簡單的例子。
讓我繼續前進，折騰 在黑板上幾號。
假設我們有是數字， 比方說，四，二，一，三。
而且，本，這些數字對我們進行排序。
>> OK，不錯。
你怎麼做到的？
好吧。
因此，與最小的開始 值和最高的，
這就是真正的好直覺。
並意識到我們 人類實際上是相當
善於解決問題 這樣，至少
當數據是比較小的。
一旦你開始有上百 數字，數千數字，
數以百萬計的數字，本大概 不能做到這一點想像中的那麼快，
假設有 中的數字的空白。
很容易數到一百萬 否則，只是費時。
>> 所以算法聽起來 像本現在只使用了
是搜索的最小數目。
因此，即使我們人類可以採取 在大量的信息可視化，
計算機實際上是 多一點有限的。
計算機只能 看一個字節在一個時間
或在一個時間 - 也許四個字節 在時間 - 這些天，也許8個字節
但極少數 的字節在給定的時間。
>> 因此，考慮到我們真的有 四個單獨的值這裡 -
你能想到奔具有 對，如果他是一個電腦等一葉障目
他看不到其他任何東西 不是在一個時間 - 一個號碼
所以我們一般會認為，像 英語中，我們將從右至左讀。
因此，第一個數字奔大概看了 在四歲然後很迅速
意識到這是一個相當大的 number--讓我繼續尋找。
>> 有兩項。
等一下。
二是超過四個小。
我會記住。
現在二是最小的。
現在one--那就更好了。
這是更小。
我要忘了約兩 ，只是記住一個現在。
>> 並可能他停止尋找？
嗯，他可以根據 該信息，
但他最好的搜索 列表的其餘部分。
因為如果零是在列表中？
如果負一人在列表中？
他只知道，他的回答 是正確的，如果他的詳盡
檢查整個列表。
所以，我們看一下這個休息。
Three--那是浪費時間。
有倒霉，但我 還是正確的這樣做。
所以現在他大概 選擇的最小的數
而只是把它開頭 名單，因為我會在這裡做的。
現在，你做了什麼接下來，即使 你不想想近
到這個地步？
重複這個過程， 所以某種循環。
有一個熟悉的概念。
因此，這裡是四人。
這是目前國內最小的。
這是一個候選人。
不再。
現在，我已經看到了兩個。
這是下一個最小的元素。
Three--那不是更小，所以 現在本可以挖出兩個。
>> 而現在，我們重複此過程， 當然3被旁邊拉出。
重複上述過程。
四個被拉出。
而現在我們出數字， 因此列表必須被排序。
>> 事實上，這是一個正式的算法。
計算機科學家會 稱之為“選擇排序”
這個想法是那種一 再次列出iteratively--
一次又一次選擇 的最小數字。
而且它是什麼太好 它只是這麼混賬直觀。
它是如此簡單。
你可以重複同樣的 連連操作。
這很簡單。
>> 在這種情況下，它是速度快，但 多長時間居然拿？
讓我們把它似乎並 覺得有點單調乏味。
所以一，二，三，四，五六百， 七，八，九，十，十一，十二，十三，十四，
15，16--任意數。
我只是想多本 時間不僅僅是四個。
所以，如果我有一個整體 一串數字now--它
甚至沒有關係 他們are--讓我們
想想這 算法真的很喜歡。
>> 假設有數字存在。
再次，什麼都無所謂 他們，但他們是隨機的。
我申請本的算法。
我需要選擇最小的數字。
我該怎麼辦？
而我要去物理 做這次表演出來。
尋找，尋找， 尋找，尋找，尋找。
只有時間我去 列表的末尾可以
我意識到最小 根數為兩根這個時候。
一個不是在列表中。
於是，我放下了兩項。
>> 我該怎麼做？
尋找，尋找，尋找，尋找。
現在我找到了七位數，是因為 有這些numbers--差距
只是隨心所欲。
好吧。
所以，現在我可以放下七人。
展望尋找，尋找。
>> 現在我假設的 當然，這本不
有額外內存，額外 存儲器，因為，當然，
我期待在相同的號碼。
當然，我可以記得 所有這些數字的，
這就是千真萬確的。
但是，如果本·記住所有 數字的，他已經看到，
他還沒有決定 根本的進步
因為他已經有 搜索能力
通過主板上的號碼。
記住所有的 數字沒有幫助，
因為他依然可以作為一台電腦 僅看，我們已經說過了，一個號碼
在一個時間。
因此，有沒有那種騙 那裡，你可以利用。
>> 因此，在現實中，如我 繼續搜索列表，
我從字面上只是繼續前進 通過來回，採摘出來
下一個最小號。
正如你可以種推斷 從我的愚蠢的動作，
這只是變得非常 乏味的速度非常快，
我似乎是想回來， 第四，來回還真不少。
現在是公平的，我沒有去 相當的，好了，讓我們see--是公平的，
我沒有相當走路 每次盡可能多的步驟。
因為，當然，我 從列表中選擇號碼，
剩下的名單也越來越短。
>> 因此，讓我們想想 其實，我要走多少步是
通過每次疲憊地走。
在第一次的情況 我們有16個數字，
所以maximally--我們只是 對於discussion--做到這一點
我不得不通過16看 編號，以找到最小。
但是，一旦我拔光了 最小的數，如何
長得剩下的列表，當然，？
只有15。
那麼有多少數字做本或我有 通過第二次左右看？
15，只是去尋找最小。
但現在，當然，列表是， 也小於以前。
那麼有多少步驟，做了我 必須採取下一次？
14，然後13，然後12，加點， 點，點，直到我留下了只有一個。
所以，現在的計算機科學家會 問：那麼，這是否人人平等？
這實際上等於一些具體 數字，我們當然可以
做算術，但是我們要談 關於算法的效率
多一點通過公式， 獨立的列表是多久。
>> 所以，你知道嗎？
這是16日，但就像我之前說的， 我們只需要調用這個問題的規模
n，其中n是一些數字。
也許是16，也許這是 三，也許這是一個億。
我不知道。
我不在乎。
我真正想要的是 一個公式，我可以
用它來比較這算法 與其他算法
有人可能聲稱 是好還是壞。
>> 因此，原來，只有我 從小學知道這一點，
這實際上工程以相同 事為n在N加一兩歲多。
而這恰好相等，的 當然，N的平方加N超過兩。
所以，如果我想要一個公式 有多少步
參與看著都 連連這些數字的
一次又一次，我會說 它n值的平方加N超過兩。
但是，你知道嗎？
這只是看起來凌亂。
我真的很想要一個 的東西一般意義。
你可能會從召回 高中有
是最高階術語的概念。
其中這些條款，第n 的平方，在n或半
隨著時間的影響最大？
更大的n變，這 這些問題的是什麼？
>> 換句話說，如果我插 中了一千萬，N平方
將是最有可能的 的主導因素，
因為一百萬次 本身是大了很多
比加一個附加萬元。
所以，你知道嗎？
這就是這樣一個混賬大 號，如果你方的數字。
這其實並不重要。
我們只是十字架 並忘掉它。
所以，一個計算機科學家會說 該算法的效率
為n的量級squared-- 我的意思是真正的近似值。
它是那種大約N個平方。
隨著時間的推移，做大 和更大的n變，這
是什麼樣的一個很好的估計 效率或缺乏效率
這種算法實際上是。
而我得到的，當然， 從實際上做數學。
但現在我只是揮手 我的手，因為我只是
希望這種算法的一般意義。
>> 因此，使用相同的邏輯，同時， 讓我們考慮另一種算法
我們已經看到at--線性搜索。
當我搜索 為手機book--
不選它，搜索 通過電話book--
我們一直在說，這是 1000步，或500步。
但是，讓我們籠統地說。
如果有n個網頁 電話本，有什麼
運行時間或 線性搜索的效率？
它的順序 多少個步驟，找到
用邁克·史密斯線性搜索，該 第一算法，或者甚至第二？
>> 在最壞的情況下，麥克 是在書的末尾。
因此，如果電話本有1000頁， 我們說最後一次，在最壞的情況下，
它可能需要大致有 很多網頁找邁克？
像1000。
這是一個上限。
這是一個最壞的可能情況。
但同樣，我們正在走 從像1000現在的號碼。
這只是ñ。
>> 那麼什麼是合乎邏輯的結論？
在電話找到麥克 書中有n頁
可能需要在最糟糕的情況下， 有多少n的順序步驟？
的確計算機 科學家會說
正在運行的時間，或 性能和效率
或低效率的算法類的， 線性搜索是n的量級。
我們可以採用同樣的 穿越出來的東西邏輯
因為我只是做了第二個 算法中，我們曾與電話本，
在這裡我們去一次兩頁。
>> 因此，1000頁的電話本可能 帶我們500翻頁，加一
如果我們加倍回位。
因此，如果一個電話本有n個網頁，但 我們正在做的一次兩頁，
這大概是什麼？
ñ了兩個，所以這是如N超過兩。
但是，我提出索賠一 剛才是n超過two--
這是一種相同的是僅僅局限於N。
這只是一個常數因子， 計算機科學家會說。
讓我們只專注於 變量，真的 -
公式中的最大變量。
>> 所以線性搜索，無論是做了一個 在同一時間或頁面同時兩頁，
是那種基本上是相同的。
它仍然是n的順序。
但是，我有我的照片聲稱較早 該第三算法不是
線性的。
它不是一條直線。
它是彎曲的線，且 代數公式有什麼呢？
的N--日誌，以便日誌N的基地二期。
同時，我們也沒有去考慮太多 今天對數的細節，
但大多數計算機科學家不會 甚至告訴你基礎是什麼。
因為這一切都只是 持續性因素，可以這麼說，
只是輕微的數值差異。
因此，這將是一個非常普遍的 這樣的特別正式的計算機
科學家在一次董事會或 在白板程序員
其實爭論這些 算法，他們將使用
還是什麼效率 他們的算法。
>> 這未必是 你在任何偉大的詳細討論，
但一個優秀的程序員是誰家 誰擁有了堅實的，正式的背景。
他能操 你在這種方式
而實際上使 定性的論據，
為什麼一種算法或 一個軟件
在某些方面，以另一種優越。
因為你肯定能 只要運行一個人的計劃
和計數的秒數 花費一些數字排序，
你可以運行一些 其他人的計劃
和計數數 幾秒鐘需要。
但是，這是一個更一般的方式 你可以用它來分析算法，
如果你願意，只是 紙或只是口頭上。
甚至沒有運行它，沒有 甚至還試圖採樣輸入，
你可以正當理由通過它。
因此與招聘開發人員，或者如果 有他或她之類的爭論給你
為什麼他們的算法，他們的秘密 醬搜索數十億美元
的網頁為您的 公司是更好的，這些
是種參數它們 最好應該能夠做出。
或者至少這些都是 這樣的東西
這將拿出討論，在 至少在一個非常正式的討論。
好吧。
因此，本建議的東西 所謂的選擇排序。
不過，我要提出有 這樣，太的其他方式。
我真的不喜歡 有關本的算法
是他繼續往前走，或 有我走，來回
和來回和來回。
如果不是我是做 像這裡這些數字
和我只處理每 數字又因為我給它？
>> 換句話說，這裡的 我的號碼列表。
四，一，三，二。
而且我要做到以下幾點。
我要插入的數字 屬於他們的地方，而
比選擇它們一次一個。
換句話說，這裡的四個號碼。
>> 這是我最初的名單。
我要去維護 實際上在這裡一個新的列表。
因此，這是舊的列表。
這是新的列表。
我看到的數字四個第一。
我的新列表最初是空的， 因此它是平凡的情況下
四個現在什錦列表。
我只是把我提供的電話號碼， 而我把它在我的新名單。
>> 正在這個新的列表排序？
是啊。
這是愚蠢的，因為只有一個 元素，但它絕對排序。
沒有什麼不合適的。
這是更有趣，這種算法， 當我移動到下一個步驟。
>> 現在我有一個。
因此，人們當然，屬於在 開始的時候還是這個新的列表的末尾？
開始的時候。
所以，我現在要做的一些工作。
我已經採取了一些 我的標記自由
通過只繪製的東西 在這裡我想他們，
但是這不是真的 準確在計算機中。
一台電腦，因為我們知道，有 RAM或隨機存取存儲器，
這就是一個字節， 另一個字節一個字節。
如果你有一個千兆字節 RAM，你有十億字節，
但他們身在一個位置。
你不能只是移動的東西左右 通過繪製在黑板上
哪裡都行。
所以，如果我的新名單有 在內存四個地點，
不幸的是，四是 已經在錯誤的地方。
>> 因此，要插入的頭號 我不能只是畫在這裡。
此存儲器位置不存在。
這將是欺騙，我一直 形象地欺騙幾分鐘
這裡。
所以真的，如果我想提出一個在這裡， 我不得不暫時複製四個
然後把一個人也沒有。
>> 這很好，這是正確的， 這是技術上是可行的，
但知道這是額外的工作。
我不只是把數字到位。
我首先要移動 號碼，然後把它放到地方，
讓我有種翻了一番我的工作量。
所以記住這一點。
>> 但我現在有了這個元素來完成。
現在，我要搶位列第三。
其中，當然，它屬於？
在這兩者之間。
我不能騙了 ，只是把它放在那裡，
因為，再一次，這種記憶 在物理位置。
所以我要複製四個 並把三個在這裡。
沒什麼大不了的。
這只是一個額外的步驟 again--感覺很便宜。
>> 但現在我移動到兩個。
這兩個，當然，屬於這裡。
現在你開始怎麼看 工作可以堆積起來。
現在，我有什麼做的？
是的，我要搬到四， 然後，我有三個拷貝，
現在我可以插入兩個。
而趕上這個 算法，有趣的是，
是，假設我們有一個更極端 情況是假設八，七，
六個五，四，三，二，一。
這一點，在許多情況下， 最壞的情況下，
因為混賬東西 簡直是倒退。
>> 它並不真正的 影響本的算法，
因為Ben的選擇 排序，他會一直
來回通過列表。
而且，因為他總是在尋找 通過整個其餘列表
沒關係 其中元件是。
但是，在這種情況下，我插 approach--讓我們試試這個。
>> 這樣一，二，三，四， 五，六，七，八。
一二三四， 五，六，七，八。
我將採取八， 和我在哪裡把它？
好吧，在我的名單開始， 因為這個新列表進行排序。
我把它劃掉。
>> 我在哪裡把七？
該死。
它需要去那裡，所以 我必須做一些複製。
而現在的七個放在這裡。
現在，我移動到六人。
現在，甚至更多的工作。
>> 八就到這裡去。
七就到這裡去。
現在的六個可以去這裡。
現在我搶五。
現在八已去 在這裡，七就到這裡去，
Six於這裡走， 現在五，重複動作。
而且我非常 不斷移動它。
>> 所以最終，這個算法 - 我們將 把它插入實際上類別 -
有很多工作了。
這只是不同 實物比本的工作。
Ben的工作讓我去 來回所有的時間，
選擇下一個最小的 連連元件。
所以這是這個極具視覺方面的工作。
>> 此其它算法，這仍然是 correct--會得到這份工作done--
只是改變的工作量。
它看起來像最初你 節約，因為你只是
處理每個元素 前面不走所有
通過列表像本的方式了。
但問題是，尤其是在這些 瘋狂的情況下，這一切都反了，
你是那種只 推遲的辛勤工作
直到你有修正自己的錯誤。
>> 所以，如果你能想像這 八七十六加五
後來四加三和二 在列表中移動自己的方式，
我們只是改變了 工種我們正在做的。
而不是在做 開始我的迭代，
我只是在做它在 每次迭代結束。
所以，事實證明，這個算法， 同樣，一般稱為插入排序，
也是為n的平方的數量級。
它實際上是沒有更好的， 沒有更好的。
>> 但是，有一個第三個方法 我會鼓勵我們考慮，
這是這樣的。
因此，假設我的名單，為簡單起見 再次，為四，一，三，
two--只有四個數字。
本有很好的直覺， 良好的人的直覺
之前，由我們解決了整個 列出eventually--插入排序。
我哄我們一起。
但是讓我們考慮 要解決這個列表最簡單的方法。
>> 未排序此列表。
為什麼？
在英語中，解釋原因 它實際上沒有進行排序。
是什麼意思不進行排序？
>> 學生：這不是連續的。
>> DAVID MALAN：不連續的。
給我一個例子。
>> 學生：把它們的順序。
>> DAVID MALAN：OK。
給我一個更具體的例子。
>> 學生：升序排列。
DAVID MALAN：不按升序排列。
更精確。
我不知道你的上升是什麼意思。
怎麼了？
>> 學生：最小的 號碼是不是在第一空間。
>> DAVID MALAN：最小號的 未在第一空間。
更加具體。
我開始流行起來。
我們計算，但 什麼是壞了嗎？
>> 學生：數值序列。
DAVID MALAN：數值序列。
每個人的一種飼養的 它這裡 - 非常高的水平。
只是從字面上告訴我什麼 錯誤就像一個五十歲的威力。
>> 學生：加一。
>> DAVID MALAN：那是什麼？
>> 學生：加一。
>> DAVID MALAN：你的意思是加一？
給我一個不同的五十歲。
怎麼了，媽媽？
有什麼不對，爸爸？
你是什​​麼意思這是沒有排序？
>> 學生：這是不正確的地方。
>> DAVID MALAN：什麼是 不正確的地方？
>> 學生：四。
DAVID MALAN：OK，好了。
因此，四是不是哪裡它應該是。
特別是，這是正確的？
四一，第一 兩個數字我明白了。
這是正確的嗎？
不，他們不按順序，對不對？
其實，現在想想 關於計算機了。
它只能看看也許有， 在once--也許是兩件事
實際上只做一件事 的時間，但它可以至少
看一件事則 緊挨著它未來的事情。
>> 那麼，這些才能？
當然不是。
所以，你知道嗎？
我們為什麼不帶寶貝 步驟解決這個問題
而不是做這些花哨 算法，如奔，其中
他用那種固定它 通過該列表循環
而不是做我做什麼，在哪裡 因為我們去我只是一種固定的呢？
我們只是從字面上打破 order--數字順序的概念，
調用它不管你want-- 在這些兩兩比較。
>> 四一。
這是正確的順序？
因此，讓我們解決這個問題。
一和四，然後 我們只是複製。
好吧，好了。
我固定的一到四。
三加二？
沒有。
讓我說的話我的手指相匹配。
四加三？
>> 這不是為了，所以我打算 做一，三，四兩。
OK，不錯。
現在，四個和兩個？
我們需要解決這個問題了。
這樣一，三，二，四。
因此，它是排序？
沒有，但它是更接近排序？
>> 這是因為我們解決了這個 錯，我們修正了這個錯誤，
我們修正了這個錯誤。
因此，我們定三大誤區無疑。
仍然沒有真正審視排序，但 它客觀上更接近排序
因為我們固定其中的一些錯誤。
>> 現在我該怎麼做？
我有種到達列表的末尾。
我似乎已經固定 所有的錯誤，但沒有。
因為在這種情況下，一些數字 可能接近已冒泡
其他數字， 還是亂序。
因此，讓我們做一遍，我會 只是做的地方這個時候。
一個和三個？
沒關係。
三加二？
當然沒有，所以讓我們改變這種狀況。
所以，二，三。
三，四？
現在，讓我們只是 尤其是迂腐在這裡。
難道排序？
你們人類知道它的排序。
>> 我應該再次嘗試。
所以奧利維亞提議我再試試。
為什麼？
因為計算機沒有 我們人眼的奢侈
只是一眼back-- OK，我完成了。
如何計算機確定 該列表現在排序？
機械。
>> 我應該通過 一次，且僅當我
不做/發現任何錯誤我可以 然後得出結論：隨著計算機，是的，
我們是好去。
所以一和二，二和 三，三，四。
現在我可以明確地說，這是 排序，因為我不需要做任何改變。
現在，這將是一個錯誤，只是 如果我愚蠢，電腦，
又問那些相同的問題 期待不同的答案。
不應該發生。
>> 所以現在的列表進行排序。
不幸的是，運行時間 該算法也可為N的平方。
為什麼？
因為你有n個數，並在 最壞的情況下，你必須移動n個數
n次，因為你必須堅持下去 回查和潛在的修復
這些數字。
我們可以做的更 正式的分析了。
>> 所以這是大家說，我們已經採取了 三種不同的方法，一是
他們立即直觀 關閉距離Ben蝙蝠
我的建議的插入 排序這個
在這裡你那種忽視 林為最初的樹木。
不過，如果你退一步， 瞧，我們已經解決了分揀概念。
因此，這是，敢說， 一個較低的水平也許
比一些其他的 算法，但讓我們
看看我們能不能想像 這些通過這種方式。
>> 因此，這是一些很不錯的 軟件，有人
用豐富多彩的酒吧這是寫 要做到以下幾點我們。
每個這些棒的代表編號。
德勒酒吧，大 數目，更小的吧，
數越小。
因此，理想的，我們希望有一個漂亮的金字塔 它開始時很小，並得到大，
這將意味著 這些酒吧進行排序。
所以我要繼續前進，選擇， 例如，本算法
序曲一選擇排序。
>> 並注意它在做什麼。
他們選擇的方式 想像這個算法
是的，就像我是 通過我的名單散步，
這一計劃是走 通過其號碼列表，
突出每個粉紅色 它在看數字。
什麼是關於現在發生？
>> 最小數 我還是奔發現突然
被移動到列表的開頭。
並注意他們做了逐出 這是有數字，
這就是完美的罰款。
我沒有進入詳細程度。
但是，我們需要把 這個數字的地方，
所以我們只是把它移到 已創建空位。
所以，我要加速這一 起來，因為否則它
變得非常乏味迅速。
動畫speed--我們走吧。
所以，現在同樣的原理 我申請，但你
可以開始感受算法，如果你 會的，或者看它多一點清晰。
並且該算法具有的效果 選擇下一個最小的元素，
所以你要開始 看到它坡道在左邊。
並在每次迭代中，我 提出的，它確實有點不太工作。
它沒有走一路 返回清單的左端，
因為它已經 知道這些排序。
因此，那種感覺就像是 加速，即使每個步驟是
取的時間相同。
這裡還有剩餘更少的步驟。
現在你可以種感受 算法清理它的結束，
實際上現在它的排序。
>> 所以插入排序是全部完成。
我需要重新隨機陣列。
並注意我可以 保持隨機的，
我們會得到一個近似 同樣的方法，插入排序。
讓我慢下來到這裡。
讓我們開始，超過。
停止。
>> 讓我們跳過四人。
在那裡，我們走了。
隨機他們陣。
在這裡，我們go--插入排序。
玩。
請注意，它在處理每 元素遇到向右走，
但是，如果它是屬於在 放錯了地方的通知
所有這些都發生在工作。
我們必須繼續將更多 和以上的元素，以騰出空間
對於一個我們要到位。
>> 因此，我們專注於 僅列表的左端。
請注意，我們甚至還沒有看at--我們 在粉紅色的東西都沒有突出
在右邊。
我們只是處理 這些問題，因為我們去，
但我們創造了很多 為自己的工作依然。
所以，如果我們加快這 現在去完成，
它有不同的感覺確實如此。
這只是專注於最左端，但 做多一點的工作作為needed--
一種平滑的事情 過去，固定的東西，
但最終處理 每個元素一次一個
直到我們到達曲風很好，我們 都知道這是怎麼回事結束，
所以這是一個有點給人留下深刻印象也許吧。
>> 但清單中end-- spoiler--將被排序。
因此，讓我們來看看最後一之一。
我們不能只是現在跳過。
我們快到了。
二去，一去。
瞧。
優秀。
>> 所以，現在讓我們做最後一人一個， 重新隨機與冒泡排序。
並注意這裡，尤其是如果我慢 下來，這也保持俯衝通過。
但是請注意，它只是使成對 comparisons--排序當地的解決方案。
但是，只要我們得到 在粉紅色的列表的末尾，
什麼將不得不再次發生？
是的，這將有 重新開始，因為它只
固定配對錯誤。
和可能已揭示還有一些。
所以，如果你的速度這件事，你會 看到的是，多顧名思義，
較小的elements--或者說， 大elements--開始
泡到頂部，如果你願意。
和較小的元素是 開始氣泡向下到左側。
事實上，這是一種 視覺效果為好。
所以這將結束整理 在一個非常類似的方式，也是。
>> 我們不必糾纏 在這個特別的。
現在讓我開這個。
還有一些其他的排序算法 在世界上，幾其中
在這裡拍攝的。
尤其是對學習者誰不 一定視覺或數學，
因為我們以前那樣，我們可以 也做到這一點audially
如果我們完善與此相關聯。
而只是為了好玩，這裡有一個 幾個不同的算法，
特別是其中一個你 要注意的是所謂的“合併排序”。
>> 它實際上是一個根本 更好的算法，
這樣歸併排序，一 你即將看到的那些，
不是n階平方。
它的n倍登錄的順序 N，這實際上是小的，因此
比其他三個更快。
而且還有其他的一對夫婦 愚蠢的人，我們拭目以待。
>> 所以在這裡，我們去一些聲音。
這是插入排序，如此反复 它只是處理的元素
因為他們來。
這是冒泡排序，所以它的 考慮到他們在同一時間對。
再次，最大的元素 被鼓泡到頂部。
>> 接下來選擇排序。
這是Ben的算法，其中 再次，他的選擇反复
下一個最小的元素。
再次，現在你真的可以聽到 它加快了，但只有在目前為止
因為它做的越來越少 在每次迭代運行。
這是一個更快，歸併排序， 這是排序的數字集群
在一起，然後將它們結合起來。
所以look--左 一半已經排序。
>> 現在它的分選的右半和 現在它打算將它們合二為一。
這就是所謂的“侏儒排序。”
你可以種看到 它會來回，
一點點在這裡固定的工作， 那裡之前它進入新的工作。
就是這樣。
還有另外一種，這是 真的只是為學術目的，
所謂的“愚蠢的排序，”這需要 您的數據，隨機進行排序，
如果是排序，然後檢查。
如果不是的話，它重新排序它 隨機，檢查它是否排序，
如果不重複。
在理論上，概率性 這將完成，
但經過相當多的時間。
這還不是最 高效的算法。
因此，對這些有任何疑問 特殊的算法或任何
相關那裡嗎？
>> 好了，現在讓我們梳理出什麼都 這些線，我一直在畫
什麼我假設電腦 可在引擎蓋下面做的。
我認為，所有這些數字 我一直drawing--他們需要得到
某處存儲在存儲器中。
現在，我們要擺脫這個傢伙了。
>> 所以在一塊內存 computer--所以RAM DIMM是
我們搜索了昨天，雙 列直插式內存module--看起來是這樣的。
而每這些黑色小芯片 是一定數量的字節，一般。
然後將金銷彷若 它連接到計算機電線，
和綠碳化矽板僅僅是 是什麼讓一切都在一起。
那麼，這究竟意味著什麼？
如果我有點畫同樣的畫面， 讓我們假設為簡單
這DIMM，雙 列直插內存模塊，
是的RAM一千兆的一千兆字節 記憶，這是多少字節總數是多少？
一千兆是多少字節？
比那更多的。
1124是公斤，1000。
米加是萬人。
GIGA是一個數十億。
>> 我在撒謊？
我們甚至可以讀取標籤？
這實際上是128 千兆字節，所以它的更多。
但我們會假裝這 僅僅是一千兆字節。
因此，這意味著有一個十億 提供給我的內存字節
或8十億位，但我們要 在字節方面談現在，
向前進。
>> 所以，這是什麼意思是，這是 一個字節，這是另外一個字節，
這是另外一個字節， 如果我們真的想
要具體我們將不得不 畫一個十億的小廣場。
但是，這是什麼意思？
好吧，讓我放大 在這張圖片。
如果我已經得到的東西看起來 現在這個樣子，這是四個字節。
>> 所以，我可以把四個數字在這裡。
一二三四。
或者，我可以把四個字母或符號。
“嘿！”可以去那裡， 因為每個字母，
我們前面所討論的， 可以表示
用八位或ASCII或一個字節。
所以，換句話說，你可以 把8個十億裡面的東西
的記憶這一棒。
現在是什麼意思把東西背 備份內存來支持這樣嗎？
這是一個程序員 稱之為“陣列”。
在計算機程序中，你不覺得 關於底層硬件本身。
你只是覺得自己是有 訪問十億字節總，
你可以任何你想做的事情。
但為了方便 這是一般有用
保持你的記憶權 彼此相鄰這樣。
所以，如果我放大this-- 因為我們肯定不會
畫一個十億一點squares-- 讓我們假設這個委員會代表
的內存棒了。
而我就畫多達我 標記結束了在這裡給我的。
所以現在我們有一棒 對板載內存
那種有一，二，三，四，五， 六個一，二，三，四，五，六，
seven--所以42字節 存儲器上的屏幕總。
謝謝。
是的，沒有我的算術右移。
所以42字節的內存在這裡。
那麼，這實際上意味著什麼呢？
那麼，一個計算機程序員 實際上一般
認為這種內存尋址。
換句話說，每一個這些 在存儲器位置，在硬件，
具有唯一的地址。
>> 它並不像一個布拉特爾複雜 廣場，劍橋，馬薩諸塞州，02138。
相反，它只是一個數字。
這是字節數為零，這是 之一，這是二，這是三個
這就是41。
等一下。
我想我說42剛才。
我開始在零算起， 所以這實際上是正確的。
現在我們不必實際繪製它 作為一個網格，如果它畫成網格
我覺得其實事情 會有點誤導。
什麼是程序員， 在他或她自己的頭腦，
一般認為這 內存就像磁帶，
像一塊遮蔽膠帶 只是推移和永遠
或者直到你耗盡內存。
因此，一個比較常見的辦法畫 而只是想想內存
會，這是字節零個，一個 兩個，三個，然後點，小點，小點。
你共有42這樣的字節，即使 雖然身體上它實際上可能
更多的東西這樣。
>> 所以，如果你覺得現在的你 內存因為這，就像磁帶，
這是一個程序員再次 將要求的存儲器陣列。
而當你想實際存儲 東西在計算機的內存，
你一般做店裡的東西 後端到背靠背到後端。
因此，我們一直在談論數字。
而當我想解決問題 樣四，一，三，二，
即使我只是畫 只有數字四個一，三，
兩個在板，而電腦會 真的有這樣的設置在內存中。
>> 而這將是旁邊 兩人在計算機的內存？
那麼，有沒有答案。
我們真的不知道。
並且，只要該 電腦並不需要它，
它不必關心什麼是下一個 該數字確實關心。
而當我在前面一台電腦說 只能看一眼地址的時間，
這是種原因。
>> 不不同於記錄 播放器和讀取頭
只能夠看在一定的 槽在物理老派的紀錄
在一個時間，同樣地 可以在計算機的感謝
到其CPU和其 英特爾指令集，
其教學之中 從存儲器中讀
或保存到memory--一個 電腦只能看
在以時間 - 一個位置 有時它們的組合，
但在同一時間真的只是一個地點。
所以，當我們在做 這些不同的算法，
我不只是寫在 vacuum--四，一，三，二。
這些數字實際上屬於 某處物理存儲器中。
因此，有小小的 晶體管或某種
下面的電子的 罩存儲這些值。
>> 和總共多少比特 現在參與其中，只是要清楚嗎？
因此，這是四個字節，或者 現在它的32位總。
因此，實際上有32個零和 那些組成這四件事。
甚至還有更多的在這裡，但 再次，我們不關心這個。
>> 所以，現在讓我們來問另外一個 問題使用內存，
因為，在端 這一天是方差。
不管是什麼，我們可能會做 的計算機上，在一天結束時
硬件仍是 同樣的引擎蓋下面。
我將如何存儲一個字嗎？
那麼，在一台電腦一個字像 “嘿！”將存儲就是這樣的。
如果你需要一個較長的 一句話，你可以簡單地
覆蓋該說點什麼 如“你好”，並存儲在這裡。
>> 所以在這裡，這contiguousness 實際上是一個優勢，
因為一台電腦可以只 從右至左讀。
但這裡有一個問題。
在這個詞的範圍內， H-E-L-L-O，感嘆號，
如何才能對計算機知道在哪裡 字開始，這裡所說的結束？
在數字的情況下， 如何做電腦
不知過了多久序列 數字是或地方開始？
哦，原來out-- 我們不會去過多
這個級別的detail-- 電腦在內存中移動的東西
從字面上這些地址的方式。
因此，在一台電腦，如果你 編寫代碼來存儲的東西
喜歡的話，你在做什麼 真正做的是打字
那記得在表達式 計算機的內存這話。
因此，讓我做一個非常， 很簡單的例子。
>> 我要繼續前進， 打開一個簡單的文本程序，
我要去創造 一個名為hello.c的。
大多數的這些信息，我們 不會進入的很詳細，
但我會寫一 計劃在同日而語，
C.這是更為嚇人， 我認為，不是從無到有，
但它的精神非常相似。
事實上，這些捲曲 braces--你可以種
想到了什麼我只是做的了。
>> 讓我們做到這一點，其實。
當綠旗點擊， 做到以下幾點。
我想打印出“你好”。
因此，這是現在的偽代碼。
我有點模糊的線條。
在C，這種語言我說 一下，這條線的打印打招呼
實際上變成的“printf”與 一些括號和分號。
>> 但它是完全一樣的想法。
而這種非常人性化 “當綠旗點擊”變
在更為神秘的“INT主要作廢。”
這確實沒有映射， 所以我只是要忽略。
不過，花括號，如 弧形拼圖這樣。
>> 所以，你可以種猜測。
即使你以前從未編程， 這是什麼程序可能嗎？
可能是打印Hello 帶有感嘆號。
>> 因此，讓我們試試吧。
我要保存它。
而這又正是一個非常 老學校環境。
我無法點擊，我不能再拖累。
我必須鍵入命令。
所以我想運行我的程序，所以 我可以這樣做，喜歡的hello.c。
這是我跑的文件。
別急，我缺少的一個步驟。
那麼，我們能說的是一個必要的 步驟，如C語言？
我剛剛編寫的源 代碼，但我還需要什麼呢？
是的，我需要一個編譯器。
所以在這裡我的Mac電腦上，我有一個 程序調用GCC，GNU C編譯器，
這讓我做this--轉 我的源代碼之中，我們會打電話給它，
機器代碼。
>> 我可以看到的是， 再次，如下，這些
是零和我 從我的源代碼創建的，
所有的零和一。
如果我想運行 我的程序 - 它將發生
被調用的a.out為 歷史reasons--“你好”。
我可以再次運行。
你好你好你好。
它似乎是工作。
>> 但是，在意味著什麼地方我 計算機的內存是詞語
H-E-L-L-O，感嘆號。
而事實證明，就像順便說一句， 什麼是電腦就不一般
這樣做，它知道在哪裡 事情開始並end--它的
要在這裡把一個特殊符號。
和公約是把 在單詞的末尾數為零
讓你知道它在哪裡 實際上結束，這樣你
不要讓打印出越來越多 人物比你實際打算。
>> 但這裡的外賣，甚至 雖然這是相當神秘，
是它的最終 相對簡單。
你被賦予某種磁帶，空白 上，你可以寫信空間。
你只需要有一個 特殊符號，如隨意
數字零，將在年底 你的話讓計算機知道，
哦，我應該後停止打印 我看到了感嘆號。
因為接下來的事情有 是零的ASCII值，
或空字符作為 有人會調用它。
但有樣的問題 在這裡，讓我們恢復
到了一會兒號碼。
假設我這樣做，事實上， 有數字數組，
並假設 節目我寫的
就像一個檔次書老師 和老師的課堂。
而這個程序可以讓他或她 輸入他們的學生成績
在測驗。
並假設學生得到 100他們的第一次測驗，也許
像80上的下一個，那麼一個 75，然後在第四測驗90。
>> 所以在這個故事這一點上， 數組大小四。
但絕對更多的內存在 計算機，但該陣列，可以這麼說，
是規模四。
假設現在老師要 分配第五測驗的類。
好了，事情之一，他 或她將不得不做
現在是這裡存儲的附加價值。
但是，如果陣列的老師有 在該程序創建的大小的，
與陣列的問題之一是 你不能只是不斷加入到內存。
因為如果的另一部分 程序有單詞“哎”就在那裡？
>> 換句話說，我的記憶可以 用於在程序什麼。
如果事先我輸入了，嘿嘿， 我想輸入4測驗分數，
他們可能會去這裡和這裡。
如果你突然改變了主意 後來，說我想第五測驗
分數，你不能只是 把它放在任何你想要的，
因為如果這個 存儲器正在被使用
東西else--其他程序 或程序的某些其他特徵
你正在運行？
所以，你必須想提前 要如何存儲你的數據，
因為現在你已經繪 自己變成一個數字角落。
>> 因此，老師可能代替 編寫一個程序時說
存儲他或她的 檔次，你知道嗎？
我要提出要求， 寫我的程序時，
我想零，一，二，三， 四，五，六，八年級人數。
這樣一，二，三，四， 五，六，七，八。
教師可以剛過分配 寫他或她的節目時記憶
並說，你知道嗎？
我永遠不會分配更多 不是在一個學期8測驗。
這只是瘋狂。
我永遠也不會分配的。
使這樣，他或她有 靈活存儲學生的分數，
像75，90，也許一個額外的地方 學生獲得加分，105。
>> 但是，如果老師從來不 使用這些三個空格，
這裡有一個直觀的外賣。
他或她只是浪費空間。
因此，換句話說，有這 在編程中常見的權衡
在這裡你可以分配 正是盡可能多的內存，只要你想，
它的好處是，你是超級 efficient--你不會被浪費
在all--但其缺點 是什麼，如果你改變主意的時候
使用要存儲方案 比你更多的數據原本打算。
>> 因此，也許該解決方案的話，那麼， 編寫程序以這樣的方式
他們使用更多的內存 比他們實際需要。
這樣，你就不會 運行到該問題，
但你是浪費的。
而更多的內存，你的程序使用， 正如我們昨天所討論的，少
內存可用 對於其他方案，
你的電腦可能會降低越快 下來，因為虛擬內存。
所以，理想的解決方案可能是什麼？
>> 欠清分似乎不好。
過度分配顯得不好。
那麼，什麼可能是一個更好的解決辦法？
重新分配。
更有活力​​。
不要強迫自己選擇 先驗的，在開始的時候，你想要什麼。
而且絕對不要過度分配， 免得你是一種浪費。
>> 所以要實現這個目標，我們 需要拋出這個數據結構，
可以這麼說，流連忘返。
還等什麼程序員 通常會使用
被稱為不是東西 數組，但一個鍊錶。
換句話說，他或她會 開始思考自己的記憶
作為是一種形狀的，他們 可以通過以下方式繪製。
如果我想存儲在一個數 一個program--所以它的九月，
我給我的學生進行測試;我想要 存儲學生的第一次測驗，
他們在它 - 我得到了100 要問我的電腦，
由我有計劃的方式 寫的，對於一個內存塊。
我要去存儲 在其100號，僅此而已。
>> 然後，幾個星期後 當我拿到我的第二個測驗，
它的時間輸入 在這90％，我準備
問電腦，哎，電腦， 我可以有內存另一塊？
這是怎麼回事給我這個 記憶空塊。
我打算把在90號， 但在我的程序以某種方式或other--
我們不會擔心 對於this--我需要的語法
以某種方式鏈接這些東西放在一起。
我將它們連起來用 看起來像這裡的箭頭。
>> 出現的第三次測驗， 我會說，哎，電腦，
給我的記憶另一塊。
而且我要放下 不管是什麼，像75，
我不得不鏈本 現在一起莫名其妙。
四測驗到來，也許 這是朝著學期結束。
而到那個時候我的程序 可能是使用內存
所有的地方，遍布身體。
所以只是踢，我 要得出這樣的規定
quiz--我忘了那是什麼;一世 想也許80或something--
來這裡的路上。
>> 但是，這很好，因為形象地 我要畫這條線。
換句話說，在現實中， 在您的計算機硬件，
首次得分可能 在這裡結束，因為它是
就在本學期的開始。
下一個可能會在這裡結束 因為時間有點已過
並且程序繼續運行。
接下來的成績，這是 75，可能是在這裡。
而最後的比分可能是 80，這是在這裡。
>> 因此，在現實中，身體上，這可能是 你的計算機內存的模樣。
但是，這不是一個有用的精神 範式的計算機程序員。
為什麼要關注所在 赫克您的數據結束了？
你只是想存儲的數據。
>> 這有點像我們的討論 早期繪製立方體。
為什麼你關心什麼 的角度為立方體
你怎麼也得把畫呢？
你只想要一個立方體。
同樣在這裡，你 只是想成績簿。
你只是要考慮的 此作為數字列表。
誰在乎它是如何的 在硬件中實現？
>> 因此，抽象，現在 在這裡這張圖片。
這是一個鍊錶，如 一個程序員調用它，
只要你有一個 名單，顯然數字。
但它形象地聯繫在一起 通過這些箭頭的方式，
所有這些箭頭are--下方 油煙機，如果你很好奇，
回想起我們的物理硬件有 地址零，一，二，三，四。
所有這些箭頭就像一張地圖 或指示，如果在那裡90 is--現在
我計數。
>> 零，一，二，三， 四，五，六，七。
它看起來像90處於 內存地址七位數。
所有這些箭頭都是 就像一張小廢
這是給予指示， 程序表示關注該地圖
去的位置七人。
在那裡你會發現 學生的第二次測驗的分數。
同時，75--如果我繼續這樣， 這是七，八，九，10，11，12，
13，14，15。
>> 這等方向正好代表 一個地圖存儲位置15。
但同樣，程序員一般不 不會在意這些細節。
而在幾乎每個節目 今天語言，程序員
甚至不知道在內存 這些數字實際上是。
所有他或她必須關心的是 它們以某種方式連接在一起
在像這樣的數據結構。
>> 但事實證明，沒有 讓過於技術化。
但是，僅僅因為我們可以或許 買得起這裡有這樣的討論，
假設我們重溫 這裡一個數組的這個問題。
讓我們來看看，如果我們後悔打算在這裡。
這是100，90，75，和80。
>> 讓我簡要地做了這種說法。
這是一個數組，並且再次，在 陣列的顯著特徵
是你所有的數據都回 返回到memory--回字面上
一個字節或者四個字節， 字節的一些固定數目之遙。
在一個鍊錶，這是我們可以借鑒 這樣，下方的引擎蓋誰
知道哪裡的東西是什麼？
它甚至不需要流這樣。
一些數據可能是 回左那裡。
你甚至不知道。
>> 所以用一個數組，你有一個 特徵稱為隨機存取。
及什麼隨機存取裝置是 計算機可以立即跳到
到在陣列的任何位置。
為什麼？
由於計算機知道 該第一位置是
零個，一個，兩個，和三個。
>> 所以，如果你想從去 這個元素到下一個元素，
你從字面上看，在 計算機的心思，只是增加一個。
如果你想要去的第三個元素， 只需添加one--下一個元素，只是
加之一。
然而，在該版本 故事的，假設
目前的計算機正在 在或處理的數量100。
你怎麼下 年級成績簿？
>> 你要取七 步驟，這是任意的。
要進入下一個，你必須 採取另一種八個步驟去15。
換句話說，它不是一個 數字之間一定的間隙，
所以它只是需要的 計算機更多的時間點。
計算機有要搜索 通過訂單記錄
找到你要找的內容。
>> 因此而陣列往往是一個 快速的數據結構 - 因為你
可以從字面上只是做簡單的算術題 並得到你想要通過添加一個，
為instance--一個鍊錶， 你犧牲該功能。
你不能只從第一次去 第二至第三至第四位。
你必須遵循的地圖。
你必須採取更多的步驟 獲得這些價值，這
似乎是增加了成本。
因此，我們付出的代價，但什麼是 該功能丹正在尋求在這裡？
什麼鍊錶 顯然允許我們這樣做，
這是的原點 這個特別的故事嗎？
>> 究竟。
一個充滿活力的大小吧。
我們可以添加到這個列表。
我們甚至可以縮小列表，因此 那我們只使用盡可能多的內存
因為我們其實是想等 我們永遠都不會過度分配。
>> 現在只要是真正挑剔的， 有一個隱藏的成本。
所以，你不應該只是讓我信服 你認為這是一個引人注目的權衡。
這裡有另一個隱藏的成本。
這樣做的好處，是明確的， 是我們獲得活力。
如果我想另一個元素，我可以 繪製和擺在那裡的一個數字。
然後，我可以鏈接它 用圖片這裡，
而在這裡，再一次，如果我 畫自己到一個角落裡，
如果別的東西已經在使用 這裡的記憶，我的運氣。
我自己畫成角。
>> 但是，什麼是隱藏 在這張照片的成本？
這不只是量 的時間，它需要
從這裡到這裡， 這七個步驟，然後
八步，這是一個以上。
什麼是另一個隱藏的成本是多少？
不僅僅是時間。
其他信息 要實現這個圖像。
>> 是啊，地圖，這些小碎片 紙張，因為我將說明他們作為。
這些arrows--這些都不是免費的。
你知道computer-- 什麼是計算機。
它具有零和一。
如果你想表示箭頭或 圖或一個數字，你需要一些內存。
所以，等價格你 支付一個鍊錶，
一個共同的計算機科學 資源，也是空間。
>> 的確如此，所以常見的是， 權衡之中
設計軟件工程 系統的時間和space--
您的成分是二，二生 你最昂貴的成分。
這花費了我更多的時間 因為我要遵守這個地圖，
但它也花費了我更多的空間 因為我要保持這種地圖各處。
所以，希望，因為我們已經種 在昨天和今天的討論，
是的好處 將大於成本。
>> 但是，這裡沒有明顯的解決方案。
也許這是better-- 一拉快速​​和骯髒的，
作為賈巴爾提出先前已經 在問題扔存儲器。
隨便買更多的內存，覺得少 認真思考解決問題，
並解決它更簡單的方法。
事實上更早的時候， 我們談到了權衡，
它不是空間 計算機和時間。
它是顯影劑的時間，這 是另一個的資源。
>> 如此反复，正是這種平衡行為 試圖決定其中哪些東西
你願意花？
這是最便宜的？
這將產生更好的結果嗎？
是嗎？
>> 的確。
在這種情況下，如果你 表示在maps--號碼
這些被稱為在許多語言 “指針”或“地址” -
它的雙空間。
這不一定是為雙如果那樣糟糕 現在我們只是存儲號碼。
假設我們被存儲 在hospital--患者記錄
所以皮爾森的姓名，電話號碼， 社會安全號碼，醫生
歷史。
這個盒子可能是多了， 更大，在這種情況
一個小小的指針的地址 接下來element--這不是什麼大不了的事。
它是這樣一個邊緣 成本也沒關係。
但是，在這種情況下，是啊，這是一個增加一倍。
好問題。
>> 讓我們來談談時間 有點更具體。
什麼是運行時間 的搜索這個名單？
假設我想查詢 通過所有學生的成績，
有n值等級 在此數據結構中。
在這裡，我們可以借 早期的詞彙。
這是一個線性數據結構。
>> 為n的大O是什麼需要得到 該數據結構的末尾，
whereas--，我們還沒有看到 這before--數組給你
什麼叫做固定的時間，這意味著 一個步驟或兩個步驟或10 steps--
沒關係。
它是一個固定的數目。
它無關 該數組的大小。
和其中的原因， 再次，是隨機接入。
電腦可以只是立即 跳到另一個位置，
因為它們都是一樣的 從一切距離。
沒有涉及的想法。
好吧。
所以，如果我可以，讓我嘗試 畫兩個最終的照片。
一個非常常見的被稱為哈希表。
所以激勵的討論， 讓我想想如何做到這一點。
>> 那麼這個怎麼樣？
假設該問題 我們現在要解決
在dictionary--正在實施 所以一大堆英文單詞
管他呢。
和目標是能夠回答 形式的問題，這是一個字？
所以，你想實現 拼寫檢查，只
像物理字典 ，你可以看看東西英寸
假設我是用一個數組來做到這一點。
我能做到這一點。
>> 並假設的話是蘋果 和香蕉和哈密瓜。
而且我想不出水果 即開始研發，所以我們只是
將有三種水果。
所以這是一個數組，我們 存儲所有這些詞
在本詞典作為數組。
現在的問題，那麼，是怎麼回事 你能存儲這些信息？
>> 好吧，我有點欺騙在這裡，因為 每個字這些信件
真的是單個字節。
所以，如果我真的想成為 挑剔的，我真的
被除以成多 內存較小的塊，
我們可以這樣做。
但是，我們要碰上 同樣的問題之前。
如果，因為韋氏或牛津 確實每year--他們添加單詞
到dictionary--我們不 一定要畫自己
與陣列的角落？
>> 因此，不是，也許是更明智的做法 是把蘋果在其自己的節點或箱，
因為我們會說，香蕉和 那麼在這裡，我們有哈密瓜。
而我們的字符串，這些東西放在一起。
因此，這是該數組， 這是鍊錶。
如果你不能完全看到，它只是 說“數組”，這表示“名單。”
>> 因此，我們有相同的 確切的問題和以前一樣，
因此我們現在有 活力在我們的鏈接列表。
但是，我們有一個相當緩慢的字典。
假設我要查找一個字。
這可能需要我的n大O字 步驟，因為這個詞可能
是一路在年底 列表，像哈密瓜。
而事實證明， 在編程，排序
數據的聖杯 結構是什麼
，讓你不斷 時間像一個數組
但仍然給您的活力。
>> 因此，我們可以有兩全其美？
事實上，也有一些是 稱為哈希表
它允許你做的正是 即，儘管近。
哈希表是一個票友 數據結構，我們
能想到的 一個array--組合
而我要畫它 像this--和鍊錶
我就畫這樣的在這裡。
>> 而辦法的事情 作品如下。
如果這個now--哈希table-- 是我的第三個數據結構，
我想存儲 在這句話，我不
只想存儲所有的 也就是說背靠背背靠背。
我想利用一些 片的信息
有關會讓詞 我得到它，它的速度更快。
>> 因此，考慮的話蘋果 和香蕉和哈密瓜，
我特意選擇了這些話。
為什麼？
有什麼樣的根本 對三種不同？
什麼是顯而易見的？
他們開始用不同的字母。
>> 所以，你知道嗎？
而不是把我所有的詞語 同一個桶，可以這麼說，
就像在一個大名單，為什麼不 我至少嘗試優化
並讓我的名單1/26一樣長。
一個引人注目的優化 可能是為什麼不
我 - 當插入一個字 入這種數據結構，
到計算機的內存，為什麼 不要我把所有的'一'字在這裡，
這裡所有的“B”字， 和所有的'C'在這裡的話嗎？
因此，這最終將一個蘋果 這裡，這裡的香蕉在這裡，香瓜，
等等。
>> 如果我有一個額外的 字like--什麼其他？
蘋果，香蕉，梨。
有人認為水果的 與一個，b或c開始？
Blueberry--完善。
那就是要在這裡結束。
因此，我們似乎有一個 稍微更好的解決方案，
因為現在如果我想 搜索蘋果，我
序曲一我不只是潛水 進入我的數據結構。
我不潛入我的電腦的內存中。
我先來看看第一個字母。
>> 這是一台電腦 科學家會說。
您散列到你的數據結構。
你把你的輸入，這在 這種情況下，就像蘋果一個字。
你分析它，看著 在這種情況下，第一個字母，
從而哈希處理。
散列是一個通用術語，由此 你拿東西作為輸入
和你產生某種輸出。
並且，所述輸出 情況是位置
要搜索，第一 位置，第二是地段，第三。
所以輸入是蘋果， 輸出第一。
輸入是香蕉，所述 輸出應該是第二位。
輸入是哈密瓜， 輸出應該是第三個。
輸入是藍莓，該 輸出應該再次被秒。
這就是可以幫助你拿 通過你的記憶快捷鍵
為了得到對話 或數據更加有效。
>> 現在，這種潛在的減少了我們的時間 多達三分之一的26
因為如果你認為你 有盡可能多的“一”字為“Z”
詞為“Q”字，這 是不是真的realistic--
你會為橫向偏移 在alphabet--的某些字母
但是，這將是一個增量 方法，它允許
你去的話更迅速。
與在現實中，一複雜的 程序，世界的谷歌，
在天下 - 的Facebook的 他們將使用一個哈希表
對於很多不同的目的。
但是，他們不會如此天真 光看第一個字母
在蘋果或香蕉或 梨或哈密瓜，
因為你可以看到這些 名單仍可能長期做下去。
>> 所以這仍然可能是排序 的linear--所以有點慢，
像n的大O字 我們前面討論。
那麼什麼是真正的好哈希表會 do--它將具有更大的陣列。
而且它會使用一個更 複雜的哈希函數，
因此，它不只是看看“一個。”
也許它著眼於“一個-P-P-L-e”和 不知何故轉換這五個字母
入位置，其中 蘋果應存放。
我們只是天真地使用字母“A” 獨自一人，因為它的簡單好用。
>> 但哈希表，在 最後，你能想到的
作為組合 陣列，其中每一個
有一個鍊錶，理想 應盡可能的短。
而這不是一個明顯的解決方案。
事實上，大部分的微調 該那張引擎蓋時，底下
實施這些種類的 複雜的數據結構
是什麼是正確的 所述陣列的長度是多少？
什麼是正確的散列函數？
你如何保存，留作回憶？
>> 但是，如何實現快速 這種討論
升級，無論是到目前為止，它是一種 超過一個人的頭部在這一點上，這
是罰款。
但是，我們開始回憶，真 一些低級別和電子。
因此這又是本 抽象的主題，
在這裡，一旦你開始採取 理所當然的，好了，我已經得到了它 - 有
物理內存，好，我知道，每 物理位置有一個地址，
好吧，我知道了，我可以代表 這些地址為arrows--
您可以非常迅速地開始有 更複雜的談話說
到底似乎允許我們 解決類似搜索的問題
和排序更有效。
放心吧，太... 因為我覺得這
是我們已經進入了一些最深 的proper--我們已經這些CS主題
在這一天半完成 點你可能通常做主持
八週在一學期的課程。
>> 對這些有問題嗎？
沒有？
好吧。
那麼，我們為什麼不停在那裡， 開始吃午飯早幾分鐘，
恢復在短短約一個小時？
我會縈繞 有點用的問題。
然後，我將不得不去 走了幾個電話，如果這是確定。
我會在此期間開啟一段音樂， 但午餐應該是指日可待。