1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVIDマラン:すべての権利。 3 00:00:11,940 --> 00:00:16,470 これはCS50であり、これは 今週3の始まり。 4 00:00:16,470 --> 00:00:19,960 >> だから今まで、私たちはしました C言語でプログラムを書いて 5 00:00:19,960 --> 00:00:23,210 それが少し見える ここでこのようなもの。 6 00:00:23,210 --> 00:00:25,470 だから私たちはのカップルを持っている シャープは、最上部に含まれています。 7 00:00:25,470 --> 00:00:28,490 私たちは、int型のメインボイドんだ、と その後途中で何かする、 8 00:00:28,490 --> 00:00:30,590 内のコードのいくつかのビット その関数の。 9 00:00:30,590 --> 00:00:34,170 しかし、キーが事実であった ここでは、ボイド言ってきた。 10 00:00:34,170 --> 00:00:39,320 そこで、ボイド、この時間のすべて、指定 このプログラムは、ときに実行すること、 11 00:00:39,320 --> 00:00:41,300 その名前だけを経由して実行することができます。 12 00:00:41,300 --> 00:00:46,330 あなたは他の単語を入力することはできませんか プログラム名の後の数字とき 13 00:00:46,330 --> 00:00:46,830 それを実行している。 14 00:00:46,830 --> 00:00:51,200 そこで、例えば、プログラムはあたかも ハローと呼ばれるファイルにコンパイル、 15 00:00:51,200 --> 00:00:53,480 あなたは./hello行うことができますが、それはそれである。 16 00:00:53,480 --> 00:00:56,750 >> 唯一の方法は、あなたは可能性が このプログラムへの入力を提供 17 00:00:56,750 --> 00:00:57,960 関数を呼び出すことである。 18 00:00:57,960 --> 00:00:59,790 例えば、どのような機能 私たちはこれまで使用していた 19 00:00:59,790 --> 00:01:00,950 ユーザからの入力を取得するには? 20 00:01:00,950 --> 00:01:02,117 >> 聴衆:文字列を取得します。 21 00:01:02,117 --> 00:01:04,700 DAVIDマラン:文字列を取得するには、または int型を取得するか、他の人を見てきた、 22 00:01:04,700 --> 00:01:07,630 あなたがそれらをまだ使用していない場合であっても、 のような、長い長いなどで取得します。 23 00:01:07,630 --> 00:01:09,380 しかし、その私たちを想定 実際に起動したい 24 00:01:09,380 --> 00:01:12,760 もう少しあるプログラムを書く 汎用性、そして、率直に言って、もう少し 25 00:01:12,760 --> 00:01:15,090 あなたがしたコマンドのように うまくいけば、なってきて、 26 00:01:15,090 --> 00:01:16,550 に慣れて少し。 27 00:01:16,550 --> 00:01:18,560 CD·スペースのDropboxのように。 28 00:01:18,560 --> 00:01:20,800 これは、もちろん、変化 ディレクトリ、と仮定すると 29 00:01:20,800 --> 00:01:23,590 あなたはジョン·ハーバードの家にいる あなたのDropboxフォルダへのディレクトリ、。 30 00:01:23,590 --> 00:01:27,380 一方、このようなコマンド 、pset2という新しいディレクトリを作成します。 31 00:01:27,380 --> 00:01:30,290 あなたが持つかもしれないとして、すでにか すぐに問題のために2を設定します。 32 00:01:30,290 --> 00:01:33,970 こんにちはメイクはもちろん、コマンドです それはハローと呼ばれるプログラムを構築します 33 00:01:33,970 --> 00:01:35,770 ドットcのハローと呼ばれるファイルから。 34 00:01:35,770 --> 00:01:39,140 そして、これらの各 ケースは、今、私たちは持っていた 35 00:01:39,140 --> 00:01:43,620 いわゆるオン引数を指定する コマンドライン、点滅プロンプト、 36 00:01:43,620 --> 00:01:48,540 その結果、メイクはとても建設するかを知っており、 そのます。mkdirは、作成するためにどのようなフォルダを知っている、 37 00:01:48,540 --> 00:01:51,110 そしてその結果、CDが知っている どこに行きたいです。 38 00:01:51,110 --> 00:01:54,720 しかし、今まで、私たちは言い続ける その主、あなたのデフォルトの関数、 39 00:01:54,720 --> 00:01:58,500 void式を持って これらの括弧の内側に、 40 00:01:58,500 --> 00:02:01,250 それことを意味します 引数を取ることはできません。 41 00:02:01,250 --> 00:02:03,240 >> だから、今日から、 私たちがやろうとしている 42 00:02:03,240 --> 00:02:06,270 私達が開始するつもりだ、である でも、このようなことをサポートしている。 43 00:02:06,270 --> 00:02:08,990 実際に、この場合には、これを使用 通常は手動で入力しないでください、 44 00:02:08,990 --> 00:02:11,130 これをやってきたことを確認 私たちのために、存在しない 45 00:02:11,130 --> 00:02:15,840 つを除く一つ、二つ、三つの追加 プログラムの名前の後に文字列 46 00:02:15,840 --> 00:02:16,850 打ち鳴らす。 47 00:02:16,850 --> 00:02:18,240 では、どのようにこれを達成するの​​ですか? 48 00:02:18,240 --> 00:02:20,260 >> さて、今日から、 私たちが望むのケースで 49 00:02:20,260 --> 00:02:22,855 を介して入力を提供するために コマンドライン、いわゆる 50 00:02:22,855 --> 00:02:24,980 私たちは追加を開始するつもりだ ここyellow--に何 51 00:02:24,980 --> 00:02:30,520 コンマARGC int型で、ボイドを置き換える 開き括弧閉じ括弧のargvストリング。 52 00:02:30,520 --> 00:02:32,520 さて、これは面白いです いくつかの理由。 53 00:02:32,520 --> 00:02:35,690 一方、それは私たちが書くようにするつもりだ もう少しダイナミックなプログラム。 54 00:02:35,690 --> 00:02:37,570 しかし、より説得力、 それが開くことになるだろう 55 00:02:37,570 --> 00:02:40,340 に関して今の会話 本当に何の配列ができます 56 00:02:40,340 --> 00:02:43,300 何の文字列を使用することが 本当にボンネットの下にある、 57 00:02:43,300 --> 00:02:47,320 来週まで私たちはダイビングを開始したとき マシンがどのようにに関してより深い中 58 00:02:47,320 --> 00:02:48,590 このようなもののすべての作業を行う。 59 00:02:48,590 --> 00:02:51,920 しかし、今のところ、の描きましょう、 おそらく、絵。 60 00:02:51,920 --> 00:02:54,950 >> あなたがプログラムを書くとき メインで宣言された 61 00:02:54,950 --> 00:02:58,810 このように、例えばメインその 二つの引数、int型をとり 62 00:02:58,810 --> 00:03:03,233 and--どのようなデータ型 二番目の引数はありますか? 63 00:03:03,233 --> 00:03:04,529 >> 聴衆:配列。 64 00:03:04,529 --> 00:03:05,320 DAVIDマラン:配列。 65 00:03:05,320 --> 00:03:09,170 それはだようなので、それは一目見ただけで見えます 文字列ではなく、角括弧に注意してください。 66 00:03:09,170 --> 00:03:12,760 私たちが導入された最後の時間を思い出してください 配列の概念。 67 00:03:12,760 --> 00:03:16,210 と配列は角括弧を使用する 文脈のカップルで。 68 00:03:16,210 --> 00:03:19,160 あなたは、正方形を使用する場合があります 配列に行くためのブラケット 69 00:03:19,160 --> 00:03:22,710 とのように、特定の要素を取得 ブラケット0またはブラケット1またはブラケット2。 70 00:03:22,710 --> 00:03:25,500 しかし、私たちは、もし簡単に言えば、見た 先週、そのまた 71 00:03:25,500 --> 00:03:28,790 これらの角括弧を使用する 配列のサイズを宣言し、 72 00:03:28,790 --> 00:03:31,790 あなたが事前にわかっている場合はどのように多くのint またはどのように多くの文字列またはものは何でも 73 00:03:31,790 --> 00:03:32,630 実際にしたい。 74 00:03:32,630 --> 00:03:34,790 だから、ありますが判明 ここに第三のコンテキスト 75 00:03:34,790 --> 00:03:37,890 それは内部に番号がありません 角括弧の。 76 00:03:37,890 --> 00:03:41,920 私がここに持っているとしてするときは、指定した、 argvのようなものの名前、 77 00:03:41,920 --> 00:03:44,550 これだけの空想の方法です 引数ベクトルを、と言っている 78 00:03:44,550 --> 00:03:47,750 別の空想の方法です 引数の配列を言って、 79 00:03:47,750 --> 00:03:50,870 開き括弧閉じ括弧だけで あなたは必ずしもないことを意味します 80 00:03:50,870 --> 00:03:52,960 どのように大きな事前に知る アレイは、あることを行っている 81 00:03:52,960 --> 00:03:55,070 しかし、あなたはそれが配列になるだろう知っている。 82 00:03:55,070 --> 00:03:57,320 だから、わからない場合 数は、そこに入れないでください 83 00:03:57,320 --> 00:04:01,160 開き括弧クローズブラケットについて argvのが文字列でないことを意味し、 84 00:04:01,160 --> 00:04:03,124 しかし文字列の配列。 85 00:04:03,124 --> 00:04:05,040 だから文法的に、あなたの場合 先週戻って考えて、 86 00:04:05,040 --> 00:04:09,460 それは言って非常によく似ています int型の年齢開き括弧のようなもの、 87 00:04:09,460 --> 00:04:10,984 そして、何かその後。 88 00:04:10,984 --> 00:04:12,150 それでは、これは次のように見えますか? 89 00:04:12,150 --> 00:04:13,399 それでは、実際に絵を描きましょう。 90 00:04:13,399 --> 00:04:18,756 だから、メインでこのプログラムを実行すると 内部定義された2つの引数を持つ 91 00:04:18,756 --> 00:04:21,339 これらの括弧のあなた 本質的に、少なくとも2つのチャンクを持っている 92 00:04:21,339 --> 00:04:23,560 あなたに渡したメモリの ボンネットの下に。 93 00:04:23,560 --> 00:04:26,550 一、この長方形として描画し、私はよように、 argcは呼ばれるようになるだろう。 94 00:04:26,550 --> 00:04:30,645 そして、ちょうど簡単にまとめとして、 ARGCのデータ型は何ですか? 95 00:04:30,645 --> 00:04:31,270 だから、int型です。 96 00:04:31,270 --> 00:04:33,480 だから数が起こっている argc--ターンに行くために 97 00:04:33,480 --> 00:04:35,660 引数countの略でアウト。 98 00:04:35,660 --> 00:04:38,887 一方、私は配列としてARGVを描いた。 99 00:04:38,887 --> 00:04:40,970 そして、私は本当に知らない どのくらいの時間があることになるだろう、 100 00:04:40,970 --> 00:04:42,470 そう、今日の目的のためにドットドットドット。 101 00:04:42,470 --> 00:04:43,636 これは、いくつかの長さのものを得る可能性があります。 102 00:04:43,636 --> 00:04:45,640 しかし、私はここに描かました 少なくとも四つの長方形。 103 00:04:45,640 --> 00:04:50,970 店舗そのメモリの塊argvはそう 文字列の文字列stringドットドットドット、 104 00:04:50,970 --> 00:04:53,950 とargcがひとつの塊である 整数のためのメモリの。 105 00:04:53,950 --> 00:04:55,710 >> だから今、のは、もう少し正確にしましょう​​。 106 00:04:55,710 --> 00:04:59,200 もし、私が、文字列を持っているとき このアレイでは、と呼ばれる 107 00:04:59,200 --> 00:05:03,290 argvは、私は彼らに取得したい 個別に、先週のように、 108 00:05:03,290 --> 00:05:05,670 私たちは表記を使用するつもりだ のargvブラケット0のような 109 00:05:05,670 --> 00:05:07,650 最初の配列を取得します。 110 00:05:07,650 --> 00:05:10,440 取得するARGVブラケット1 など第二のもの、と。 111 00:05:10,440 --> 00:05:14,597 ここで重要なのは、私たちがまだいるという0 indexed--私達はまだ0からカウントしている。 112 00:05:14,597 --> 00:05:16,430 だから今、実際にしてみましょう この中に何かを置く。 113 00:05:16,430 --> 00:05:21,670 私はと呼ばれるプログラムをコンパイルした場合 ハローハロードットCというファイルから、 114 00:05:21,670 --> 00:05:24,340 そして私はそのプログラムを実行する ドットで、ハロースラッシュ 115 00:05:24,340 --> 00:05:28,380 私のコンピュータは、私のラップトップを何、 ボンネットの下に次のようになり 116 00:05:28,380 --> 00:05:31,300 私はドットを実行した瞬間 こんにちはスラッシュと入力してEnterキーを押し? 117 00:05:31,300 --> 00:05:33,500 まあ、これはおそらくです 私たちが記述することができる 118 00:05:33,500 --> 00:05:37,010 お使いのコンピュータのの内容として メモリ、またはRAM--ランダムアクセスメモリ。 119 00:05:37,010 --> 00:05:40,330 換言すれば、コンピュータ、 何とかあなたのための魔法のように、 120 00:05:40,330 --> 00:05:45,360 argcは内数1を入れ、AKAのargcount、 そしてそれは、文字通りの文字列を入れます 121 00:05:45,360 --> 00:05:48,200 ./helloのargvブラケット0中。 122 00:05:48,200 --> 00:05:51,750 私は何、率直に言って、全く分からない argvのブラケットの1又は2又は3、 123 00:05:51,750 --> 00:05:55,550 ユーザはない持っている場合ため 、./hello以外に何かを入力した 124 00:05:55,550 --> 00:05:58,550 私たちはこれらのことを前提とするつもりだ 最も可能性の高いごみ値であり、 125 00:05:58,550 --> 00:05:59,700 いわば。 126 00:05:59,700 --> 00:06:02,650 メモリのこれらのチャンク 存在するが、それは私たち次第ではありません 127 00:06:02,650 --> 00:06:05,710 ので、それらを見する argcountは唯一のものです。 128 00:06:05,710 --> 00:06:07,870 >> さて、一方で、私の場合 別のプログラムを実行して書き込み、 129 00:06:07,870 --> 00:06:12,250 より適切にコマンドであり、CD、、 あなたの点滅prompt-- CD空間での 130 00:06:12,250 --> 00:06:17,200 私はそれを実行したときに、効果的に、Dropbox-- CDのプログラムの実行時に、argcは、 131 00:06:17,200 --> 00:06:22,270 私のコンピュータのメモリの内部で、ためのものです ほとんどの最も短い第2番。 132 00:06:22,270 --> 00:06:25,936 そして、argvのブラケットoがあります CD、ARGVブラケット1は、Dropboxのを持ってい 133 00:06:25,936 --> 00:06:28,560 そして、もちろん、コマンド 完了するので、このメモリのすべて 134 00:06:28,560 --> 00:06:30,420 基本的に消えて 何か他のものに使用されます。 135 00:06:30,420 --> 00:06:32,270 そして、それは私が言う理由です ただ一瞬。 136 00:06:32,270 --> 00:06:35,720 >> 一方、私たちはは、mkdir pset2を行う場合、 画像は、ほとんど同じに見えます 137 00:06:35,720 --> 00:06:37,900 しかしargvの内側の異なる文字列を持つ。 138 00:06:37,900 --> 00:06:42,570 私はハロー打ち鳴らすダッシュを行う場合 ハロードットcの、同じ考え。 139 00:06:42,570 --> 00:06:47,060 より多くのものをするために入力されます のargv、およびargcが、もちろん、4である。 140 00:06:47,060 --> 00:06:49,150 そのように、換言すれば、 でも、この配列も 141 00:06:49,150 --> 00:06:52,950 いくつかのドットのドットを、ドットかもしれない 可変長、いわば、 142 00:06:52,950 --> 00:06:56,720 あなたはいつもどこでそれの終わりを知る ARGCはあなたを教えしようとしているので、ある 143 00:06:56,720 --> 00:07:00,120 どの時点でいったん停止する必要が ARGVの要素を見ている。 144 00:07:00,120 --> 00:07:03,660 あなたは4つしか見ることができ この場合の合計。 145 00:07:03,660 --> 00:07:06,600 >> それでは、今を見てみましょう おそらく、簡単なプログラム。 146 00:07:06,600 --> 00:07:09,070 ただ挨拶をワン Zamylaのような人に。 147 00:07:09,070 --> 00:07:12,620 だから私は、私はプログラムを書くつもりだ主張 一瞬で、それを介して、私は何ができる 148 00:07:12,620 --> 00:07:16,670 その後./helloスペースZamyla、と私が欲しい 私のプログラムは、何かを印刷する 149 00:07:16,670 --> 00:07:18,520 超簡単な「Zamyla、こんにちは。 "のような 150 00:07:18,520 --> 00:07:20,100 今、過去に私たちはにgetStringを使用しました。 151 00:07:20,100 --> 00:07:22,850 過去に、たとえそう あなたは、プログラミングの初心者 152 00:07:22,850 --> 00:07:27,180 オッズはあなたがかき立てる可能性がある にgetStringを使用するプログラム 153 00:07:27,180 --> 00:07:29,390 そしてその後のprintfを使用しています Zamylaに挨拶します。 154 00:07:29,390 --> 00:07:31,290 しかし、ここで今回のgetString使用しないようにしましょう​​。 155 00:07:31,290 --> 00:07:37,510 私が代わりにAppliantへ行こう と標準I Oドットhを含まない。 156 00:07:37,510 --> 00:07:41,160 私はまた、CS50ドットhを含んでみましょう。 157 00:07:41,160 --> 00:07:44,730 さて、メインint型、そして今私は今 今日のボイドをするつもりはない。 158 00:07:44,730 --> 00:07:51,200 その代わりに、私はint型のargcをするつもりだ 文字列のargv開き括弧閉じ括弧、 159 00:07:51,200 --> 00:07:52,640 番号を指定していない。 160 00:07:52,640 --> 00:07:54,644 そして今、ここに私の行う、いわゆるされている。 161 00:07:54,644 --> 00:07:57,560 私が今やろうとしてるのは、私は今、ある 信仰の飛躍を少しやろうとして、 162 00:07:57,560 --> 00:08:00,560 私は、ユーザーのことを前提とするつもりだ 正しくこのプログラムを使用するつもり、 163 00:08:00,560 --> 00:08:04,980 と私は単純に行くよ 、ハローprintfの%SNを行う。 164 00:08:04,980 --> 00:08:06,630 だから、何もそこに新しい。 165 00:08:06,630 --> 00:08:11,470 しかし、私は今どのような言葉に置きたい プログラム名の後にユーザーの種類。 166 00:08:11,470 --> 00:08:16,970 だから私はZamyla ./helloスペースをすれば、私 何とかプログラム的にアクセスしたい 167 00:08:16,970 --> 00:08:20,870 引用終わり "Zamyla」を引用する私はそう 私の議論ベクターに行くことができ、 168 00:08:20,870 --> 00:08:25,980 私の文字列の配列、およびコマンドであれば、 再び、./helloスペースZamylaだった 169 00:08:25,980 --> 00:08:29,340 私は何番目たいですか ここにはargvに置くか? 170 00:08:29,340 --> 00:08:29,840 聴衆:1。 171 00:08:29,840 --> 00:08:32,355 DAVIDマラン:1、理由 ブラケット0が判明 172 00:08:32,355 --> 00:08:34,230 になるだろう 私たちが見たように、プログラムの名前、。 173 00:08:34,230 --> 00:08:37,789 だからブラケット1は、最初の単語である 私は、ユーザは、入力したもの。 174 00:08:37,789 --> 00:08:39,559 私が先に行くと、これを保存するつもりです。 175 00:08:39,559 --> 00:08:42,830 私は私のフォルダに行くつもりです 私は、このファイルを配置した場所。 176 00:08:42,830 --> 00:08:44,920 私はハロー3を作るするつもりです。 177 00:08:44,920 --> 00:08:46,230 コンプIOの[OK]をクリックします。 178 00:08:46,230 --> 00:08:51,380 ./hello Zamylaを入力してください。 179 00:08:51,380 --> 00:08:54,480 私は間違って何をした? 180 00:08:54,480 --> 00:08:57,270 私は驚きによって逮捕された 私自身そこにちょうど一瞬。 181 00:08:57,270 --> 00:08:58,230 私は間違って何をした? 182 00:08:58,230 --> 00:08:59,220 >> 聴衆:名前。 183 00:08:59,220 --> 00:09:01,767 >> DAVIDマラン:ファイルの 実際にhello3.c呼んだ。 184 00:09:01,767 --> 00:09:03,850 そして私はちょうどのためにそれをした 一貫性、私たちがしたので、 185 00:09:03,850 --> 00:09:06,550 でhello.cを年代を持っていた オンラインコード内の過去。 186 00:09:06,550 --> 00:09:11,550 それでは、この./helloを修正しましょう ブラケットダッシュ3 Zamyla。 187 00:09:11,550 --> 00:09:12,370 入力してください。 188 00:09:12,370 --> 00:09:14,030 そして今、私たちは、ハローZamylaを持っている。 189 00:09:14,030 --> 00:09:17,650 一方、私は、これを変更することができます ロブ、または実際に他の語である。 190 00:09:17,650 --> 00:09:19,230 >> しかし、ここでコーナーケースを考えてみましょう。 191 00:09:19,230 --> 00:09:24,360 あなたがあれば何が起こるかを期待するかもしれない 私はすべての人の名前を入力しないのですか? 192 00:09:24,360 --> 00:09:25,270 >> 聴衆:エラー。 193 00:09:25,270 --> 00:09:27,300 >> DAVIDマラン:エラー おそらく、いくつかの並べ替えの。 194 00:09:27,300 --> 00:09:28,200 見てみましょう。 195 00:09:28,200 --> 00:09:29,440 入力してください。 196 00:09:29,440 --> 00:09:30,210 ヌル。 197 00:09:30,210 --> 00:09:33,870 だから、printfのは、実際にされている 私たちの小さな保護 198 00:09:33,870 --> 00:09:38,131 ここで、文字通りオープンな括弧を印刷 ヌルが、さらに悪い事が起こる可能性があります。 199 00:09:38,131 --> 00:09:40,130 そして、ちょうど実証する 何か絶対に 200 00:09:40,130 --> 00:09:42,800 すべきではない、の中で行ってみよう こことチャンスをうかがっ始める。 201 00:09:42,800 --> 00:09:43,300 右? 202 00:09:43,300 --> 00:09:46,410 私が知っている場合は、その写真の中の メモリは、基本的にこれです 203 00:09:46,410 --> 00:09:52,660 ARGVブラケット1がZamyla、ARGVを持って ブラケット0 ./helloがある場合、または./hello-3。 204 00:09:52,660 --> 00:09:55,400 ブラケット2には何ですか? 205 00:09:55,400 --> 00:09:58,210 だから私はそれに答えることができます 右、自分自身に疑問? 206 00:09:58,210 --> 00:10:00,460 私はちょうど2に1を変更することができます。 207 00:10:00,460 --> 00:10:07,270 私は今、ハロー3を再コンパイルすることができます ./hello3のがズームEnterキーを押してみましょう。 208 00:10:07,270 --> 00:10:08,270 おっと。 209 00:10:08,270 --> 00:10:10,660 いいえ引用符はありません。 210 00:10:10,660 --> 00:10:12,540 興味深い。 211 00:10:12,540 --> 00:10:15,530 だから、種類のクールだ ここにある他に何を参照してください。 212 00:10:15,530 --> 00:10:17,130 >> だから、私のラップトップの中に他に何ですか? 213 00:10:17,130 --> 00:10:20,390 それではブラケット3で保存しましょう​​。 214 00:10:20,390 --> 00:10:25,190 ./hello-3、hello3を行います。 215 00:10:25,190 --> 00:10:26,500 おさる。 216 00:10:26,500 --> 00:10:30,560 そして今のは本当にbold-- 50を紹介しています。 217 00:10:30,560 --> 00:10:34,340 だから、深く、本当にダイビングだ 私のコンピュータのメモリに。 218 00:10:34,340 --> 00:10:35,930 50のインデックス。 219 00:10:35,930 --> 00:10:41,950 だからハロー3 ./hello-3を作る。 220 00:10:41,950 --> 00:10:42,680 おさる。 221 00:10:42,680 --> 00:10:44,660 すべての権利、今私はちょうどよ 無謀な取得するつもり。 222 00:10:44,660 --> 00:10:47,331 それでは5000に行こう。 223 00:10:47,331 --> 00:10:47,830 かしこまりました。 224 00:10:47,830 --> 00:10:49,520 だから私は、再コンパイルしてみましょう。 225 00:10:49,520 --> 00:10:51,460 ./hello-3、hello3を行います。 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 [OK]をクリックします。 228 00:10:56,460 --> 00:10:59,250 今、あなたのいくつか、そこかもしれない オフに行く電球である。 229 00:10:59,250 --> 00:11:01,900 どのように多くのあなたの持っている 前に、このメッセージを見たことある? 230 00:11:01,900 --> 00:11:03,440 [OK]をクリックします。 231 00:11:03,440 --> 00:11:04,420 それでは、なぜ? 232 00:11:04,420 --> 00:11:07,250 >> オッズはare--と異なるあります これを引き起こすことができるもの、 233 00:11:07,250 --> 00:11:09,730 と明らかにあなたは良いにしている 私たちは、明らかに持っているcompany-- 234 00:11:09,730 --> 00:11:11,900 と呼ばれるものが原因 セグメンテーションフォールト。 235 00:11:11,900 --> 00:11:15,890 そして今日のための長い話を短く、私 メモリのセグメントを触ってきた 236 00:11:15,890 --> 00:11:17,060 私が持っているべきではないこと。 237 00:11:17,060 --> 00:11:19,970 セグメントは、ちょうどチャンクを意味する 私が持っているべきではないメモリ。 238 00:11:19,970 --> 00:11:25,530 今、コンピュータは、もし私がいることを保証します 私はARGVに触れることができることを./helloZamylaを実行 239 00:11:25,530 --> 00:11:27,760 ブラケット0とargvブラケット1である。 240 00:11:27,760 --> 00:11:32,730 しかし、argcが値2である、それは私は意味 唯一それが名誉のようなものだallowed-- 241 00:11:32,730 --> 00:11:35,180 触れることsystem-- ブラケット0とブラケット1。 242 00:11:35,180 --> 00:11:37,990 私は遠くに行く場合は、あります 絶対にそこにメモリになるだろう。 243 00:11:37,990 --> 00:11:40,660 私のRAMは物理的に存在している コンピュータ。 244 00:11:40,660 --> 00:11:42,080 しかし、誰が何があるか知っている? 245 00:11:42,080 --> 00:11:44,450 確かに、私は、複数を実行している 一度プログラム。 246 00:11:44,450 --> 00:11:46,910 私はなかった場合、私はseen--場合があります Appliantでこれをやって 247 00:11:46,910 --> 00:11:49,937 私のMacまたはPC--に私が持っているかもしれません 電子メールの内容を見た。 248 00:11:49,937 --> 00:11:52,270 私は瞬間を見たかもしれない 私が最近送ったメッセージ。 249 00:11:52,270 --> 00:11:55,390 かもしれない何でも メモリに周り長引く 250 00:11:55,390 --> 00:11:59,180 を介してアクセスされた可能性が この任意角括弧表記。 251 00:11:59,180 --> 00:12:02,850 あるいは、さらに悪いことに、あなたが持っているかもしれません 私のパスワードのいずれかを発見した 252 00:12:02,850 --> 00:12:05,859 私は最近、タイプ入力することだろうと ようにプログラムがメモリに保存されていた 253 00:12:05,859 --> 00:12:07,900 私を認証すると、 その後だけの種類のそれを残し 254 00:12:07,900 --> 00:12:09,910 私はそのプログラムを終了するまでRAMに。 255 00:12:09,910 --> 00:12:12,860 >> そして実際に、これはの一つである 危険と1の力 256 00:12:12,860 --> 00:12:15,980 Cのような言語を使用しての あなたは自由なアクセスを持っている 257 00:12:15,980 --> 00:12:18,860 全体の内容へ プログラムのメモリの、 258 00:12:18,860 --> 00:12:21,340 何悪者はできる でも、それらのcases--の観光 259 00:12:21,340 --> 00:12:23,807 特に私たち Webプログラミングに到達 260 00:12:23,807 --> 00:12:26,890 学期の終わりに向かって、私たちはよ 周り突くこのtopic--を再訪、 261 00:12:26,890 --> 00:12:31,660 潜在的に、誰かのコンピュータの メモリおよびそのような好奇心のものを見つける 262 00:12:31,660 --> 00:12:32,570 私たちはそこに見たように。 263 00:12:32,570 --> 00:12:36,900 またはさらに悪いことに、まだ、パスワード、彼 または彼女はそれから悪いことをするために使用することができます。 264 00:12:36,900 --> 00:12:40,240 >> だから、明らかに私は、これを行っているべきではありません 奇妙なことが起こるを開始するので。 265 00:12:40,240 --> 00:12:42,310 実際、このプログラムがクラッシュする。 266 00:12:42,310 --> 00:12:44,580 これは等価である のMac OSやWindowsでの 267 00:12:44,580 --> 00:12:46,770 ただ消えてプログラムウィンドウ。 268 00:12:46,770 --> 00:12:48,300 予期しないエラーが発生しました。 269 00:12:48,300 --> 00:12:50,840 コマンドライン環境で 私たちはこのようなものを参照してください。 270 00:12:50,840 --> 00:12:54,480 しかし、それは、なぜ、私は単に触れてよさだ 私に属していないメモリ。 271 00:12:54,480 --> 00:12:57,090 >> それでは、このAを防御しましょう 別の方法で少し 272 00:12:57,090 --> 00:12:59,010 ここでこのプログラムを見ることによって。 273 00:12:59,010 --> 00:13:01,000 そこで、再び、スケルトン 私たちはearlier--見た 274 00:13:01,000 --> 00:13:02,480 そして今回はint型を強調しました。 275 00:13:02,480 --> 00:13:05,900 そして、メインのすべてのこの時間はあります 実際に値を戻しました。 276 00:13:05,900 --> 00:13:09,120 といっても私たちの講義のほとんどにおいて 私たちは、一度使ったことがない例 277 00:13:09,120 --> 00:13:10,990 主に何かを返す。 278 00:13:10,990 --> 00:13:13,710 私達はちょうどのprintfクローズを書く 中括弧とそれはそれだ。 279 00:13:13,710 --> 00:13:16,500 しかし、自由のため、どのような コンパイラは、あなたのために行ってき 280 00:13:16,500 --> 00:13:19,510 効果的に、あなたのために0を返している。 281 00:13:19,510 --> 00:13:22,950 ゆうパックになり、それは少しだ 0が良好であることをcounterintuitive--。 282 00:13:22,950 --> 00:13:24,690 それは、それ自体が誤った意味ではありません。 283 00:13:24,690 --> 00:13:29,080 0が良好であり、任意の非0 値、世界が決定しました、 284 00:13:29,080 --> 00:13:30,619 エラーを表すことができます。 285 00:13:30,619 --> 00:13:32,910 あなたは今までめちゃめちゃにしたのであれば お使いのコンピュータ上で何かアップ、 286 00:13:32,910 --> 00:13:36,600 またはプログラムはあなたに死亡しており、 あなたは、いくつかの誤ったウィンドウを得ている 287 00:13:36,600 --> 00:13:40,360 画面上の、というエラー 負の49ま​​たはエラー23-- 288 00:13:40,360 --> 00:13:44,170 のいくつかの一見任意value-- プログラマは、ハードコードされているため、 289 00:13:44,170 --> 00:13:49,370 49負または正のような値 23は、任意の数を表すために、あえて言う、 290 00:13:49,370 --> 00:13:53,340 40億の可能なものの それはプログラムの中でうまくいかないかもしれない。 291 00:13:53,340 --> 00:13:55,700 >> だから私はどのようにかかることがあります この利点自身? 292 00:13:55,700 --> 00:13:58,970 さて、私はプログラムを開いてみましょう 私は事前に書いた、 293 00:13:58,970 --> 00:14:01,450 とハロー4と呼ばれるオンラインつつく。 294 00:14:01,450 --> 00:14:05,650 そして、それはことを除いて、ほとんど同じだ そのエラー·チェックの少しを得た。 295 00:14:05,650 --> 00:14:09,660 この場合、私は再び宣言した 二つの引数を取るように、メイン、 296 00:14:09,660 --> 00:14:13,180 今回、17行上、予告 私は、健全性チェックを少しやってる。 297 00:14:13,180 --> 00:14:17,100 私は確信していることを作ってるんだ argcが2に等しい等しい。 298 00:14:17,100 --> 00:14:18,960 それがある場合なので、その 私は無事にできることを意味します 299 00:14:18,960 --> 00:14:21,420 だけではなくブラケット0が、ブラケット1をタッチします。 300 00:14:21,420 --> 00:14:24,330 そして、私は、先に行くと、プリントアウト この場合には、Zamylaやロブ 301 00:14:24,330 --> 00:14:26,020 または私は型指定されたどのような言葉。 302 00:14:26,020 --> 00:14:28,020 そして今、ちょうど取得する もう少し適切、 303 00:14:28,020 --> 00:14:31,910 私は明示的に返すつもりだ 0すべてを示すために順調です。 304 00:14:31,910 --> 00:14:33,300 悪い何も起こらなかった。 305 00:14:33,300 --> 00:14:38,590 >> しかし、慣例により、私はするつもりだ 1、または率直に言って、任意の非0値を返す、 306 00:14:38,590 --> 00:14:40,160 何かが間違っていた場合。 307 00:14:40,160 --> 00:14:43,270 今、ユーザーはするつもりはない 本当に何が起こっているのに気づく。 308 00:14:43,270 --> 00:14:50,410 確かに私は、このディレクトリに行けば、 私たちは、ズームインおよびハロー4を作るのですか 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamylaは私が期待どおりに動作します。 310 00:14:54,210 --> 00:14:58,570 しかし、私は代わりに入力しない場合は、 何も、何も起こらないようだ、 311 00:14:58,570 --> 00:14:59,680 それはクラッシュしない。 312 00:14:59,680 --> 00:15:04,660 そして、私は代わりに何かをしている場合 ロブは試験監督官であるように 313 00:15:04,660 --> 00:15:07,550 Thayer--共有中 任意の情報。 314 00:15:07,550 --> 00:15:13,680 しかし、通知、argvの1、2、3、4、および 5今メモリ内に存在する必要があります。 315 00:15:13,680 --> 00:15:16,540 それは、あまりにも、ものではありません 私のプログラムは、期待して 316 00:15:16,540 --> 00:15:20,300 私がいるかどうかチェックしましたので、 argcが2かに等しい等しい。 317 00:15:20,300 --> 00:15:22,140 だから私は今、この防御だ。 318 00:15:22,140 --> 00:15:25,290 >> さて、余談として、私たち users--をprogrammer--というより、私たち 319 00:15:25,290 --> 00:15:29,670 0または1であるが、使用していることを見ることはない このツールは、デバッガ、またはその他のツールと​​呼ばれる 320 00:15:29,670 --> 00:15:32,250 私たちは前に表示されますように 長い、あなたプログラマ 321 00:15:32,250 --> 00:15:36,590 実際にかもしれないものを見ることができます あなたのプログラムの中に間違って。 322 00:15:36,590 --> 00:15:39,170 >> だから、argcは上の任意の質問は? 323 00:15:39,170 --> 00:15:40,873 うん。 324 00:15:40,873 --> 00:15:45,292 >> 聴衆:私は彼らを見てきました 文字を持っていなかった、[聞き取れない] 325 00:15:45,292 --> 00:15:49,669 ちょうどのような文字列のスターdを、言った 文字のアスタリスクカンマ。 326 00:15:49,669 --> 00:15:50,710 彼らはここと同等か? 327 00:15:50,710 --> 00:15:51,626 >> DAVIDマラン:それらは。 328 00:15:51,626 --> 00:15:55,080 そこで問題は、あなたが持っている、である 時折見られるプログラム 329 00:15:55,080 --> 00:15:57,270 そうでないこのような 文字列のargvブラケットを言う 330 00:15:57,270 --> 00:16:01,015 その代わりに何かを言う チャースターのargvブラケット等を挙げることができる。 331 00:16:01,015 --> 00:16:03,140 そして、さらには他のあります あなたが見るかもしれない変異体が含まれる。 332 00:16:03,140 --> 00:16:04,264 彼らは確かに等価である。 333 00:16:04,264 --> 00:16:06,240 今のところ、私たちはこれらを持っている 補助輪のようなもの 334 00:16:06,240 --> 00:16:09,737 CS50内の文字列の形で上 図書館が、ちょうど一週間以上での 335 00:16:09,737 --> 00:16:12,570 または私たちはそれを削除しようとしている 完全に、実際に障害物 336 00:16:12,570 --> 00:16:16,820 何char型と星を見て であり、それらをメモリに関連する方法 337 00:16:16,820 --> 00:16:18,140 より一般的な表現。 338 00:16:18,140 --> 00:16:19,540 だから私たちは戻ってそれに来る。 339 00:16:19,540 --> 00:16:21,540 >> 私たちはargvやargcは上の他の質問は? 340 00:16:21,540 --> 00:16:22,397 うん。 341 00:16:22,397 --> 00:16:24,438 聴衆:なぜそれが返した エラー[聞き取れない]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVIDマラン:なぜそれをした ああonly--エラーを返す! 344 00:16:29,230 --> 00:16:31,813 前のケースでは、とき、私たち メモリの周りいじくった、 345 00:16:31,813 --> 00:16:35,110 なぜそれが唯一のエラーを返しました 私は本当に大きな数を入力すると? 346 00:16:35,110 --> 00:16:36,620 短い答えは、私たちが単に幸運です。 347 00:16:36,620 --> 00:16:39,240 一般的に言えば、コンピュータ チャンクでメモリを割り当て、 348 00:16:39,240 --> 00:16:42,900 そしてそれは私に十分な大きさのチャンクを与えた 私は気づかれることなく、離れて得た、 349 00:16:42,900 --> 00:16:46,280 ブラケット2に触れた、ブラケット3、 ブラケット50、しかし、すぐに私はプッシュとして 350 00:16:46,280 --> 00:16:49,080 私の運は、私が過ぎた メモリのチャンクの境界線 351 00:16:49,080 --> 00:16:50,520 オペレーティングシステムは、私を与えていた。 352 00:16:50,520 --> 00:16:52,720 そして、それはときにそれをです 弾圧のない、と述べた。 353 00:16:52,720 --> 00:16:54,580 セグメンテーションエラー。 354 00:16:54,580 --> 00:16:55,692 うん。 355 00:16:55,692 --> 00:16:58,890 >> 聴衆:どのようにコンピュータが行う ARGCの値を知っていますか? 356 00:16:58,890 --> 00:17:02,390 >> DAVIDマラン:どのように コンピュータはARGCの値を知っていますか? 357 00:17:02,390 --> 00:17:07,920 あなたがプログラムを実行すると、そのプログラム、 点滅プロンプトの性質上、 358 00:17:07,920 --> 00:17:11,359 の配列が渡され 型指定された言葉 359 00:17:11,359 --> 00:17:13,300 プロンプトで、それがあった プロンプトに入力。 360 00:17:13,300 --> 00:17:16,569 そしてそれは、オペレーティングある システム基本的にその 361 00:17:16,569 --> 00:17:20,329 あなたのために主の主張を移入します。 362 00:17:20,329 --> 00:17:22,829 だから、サービスの一つだ あなたが得ることを、ソートの密か 363 00:17:22,829 --> 00:17:24,869 のボンネットの下に オペレーティングシステム。 364 00:17:24,869 --> 00:17:27,118 その他の質問は? 365 00:17:27,118 --> 00:17:27,618 うん。 366 00:17:27,618 --> 00:17:29,787 >> 聴衆:コアダンプはどういう意味ですか? 367 00:17:29,787 --> 00:17:31,370 DAVIDマラン:コアダンプはどういう意味ですか? 368 00:17:31,370 --> 00:17:32,950 だから、それは良い質問ですね。 369 00:17:32,950 --> 00:17:35,312 そして、私はに戻ってみましょう ここでは、このディレクトリ。 370 00:17:35,312 --> 00:17:37,270 そして、あなたはそれをわかります 私はそこに新しいファイルを持っている。 371 00:17:37,270 --> 00:17:41,670 それは、確かにコアと呼ばれ、それがだだ 実際に一般的にまともなサイズのファイル。 372 00:17:41,670 --> 00:17:45,300 それは本質的にスナップショットです 私のプログラムのメモリの内容 373 00:17:45,300 --> 00:17:46,902 それがクラッシュした場合、またはRAM。 374 00:17:46,902 --> 00:17:49,110 そして、これは有用であろう、 潜在的に、診断的に、 375 00:17:49,110 --> 00:17:52,850 今後の講義で話すいったん およびデバッグに関するセクション、 376 00:17:52,850 --> 00:17:55,730 あなたが実際に行うことができますので、 デジタル剖検相当 377 00:17:55,730 --> 00:18:00,300 そのファイルに把握を支援する あなたはあなたのプログラムで間違って何をしたか。 378 00:18:00,300 --> 00:18:01,220 うん。 379 00:18:01,220 --> 00:18:04,450 >> 聴衆:コマンドのargcです それ自体、または、あなたはそれを任意の名前を付けることができますか? 380 00:18:04,450 --> 00:18:05,575 >> DAVIDマラン:良い質問。 381 00:18:05,575 --> 00:18:08,040 それ自体はコマンドのargcである、 またはあなたはそれを任意の名前を付けることができますか? 382 00:18:08,040 --> 00:18:09,290 それは間違いなく、コマンドではありません。 383 00:18:09,290 --> 00:18:13,500 それは単に変数のだ 名前や引数の名前、 384 00:18:13,500 --> 00:18:15,481 したがって一切お このfooという呼び出すことができ、 385 00:18:15,481 --> 00:18:18,480 私達は傾向がある、このバーを呼び出すことができます ゴーカートにコンピュータの言葉であると 386 00:18:18,480 --> 00:18:19,860 科学者に送られます。 387 00:18:19,860 --> 00:18:22,820 しかし、慣例により、私たちはargcとargvを使用してください。 388 00:18:22,820 --> 00:18:25,360 しかし、それはちょうど人間だ コンベンション、何よりも。 389 00:18:25,360 --> 00:18:25,860 かしこまりました。 390 00:18:25,860 --> 00:18:28,140 だから結局のところ、私がしてきた 白lie--のビットを伝える 391 00:18:28,140 --> 00:18:31,264 と率直に言って、将来的には、次のように表示されます 私たちは、他の白い嘘を言ってきた。 392 00:18:31,264 --> 00:18:33,510 しかし、今のところ、私たちはつもりだ これらのいずれかをバック剥離する。 393 00:18:33,510 --> 00:18:37,310 時以前に私がここに。この場合、 ./helloまたは./hello-3のようなプログラムを実行した 394 00:18:37,310 --> 00:18:42,780 Zamyla、私たちは私のコンテンツを持っていた おおよそのように見て、コンピュータのメモリ 395 00:18:42,780 --> 00:18:43,280 この。 396 00:18:43,280 --> 00:18:45,070 しかし、文字列が何であるかを思い出してください。 397 00:18:45,070 --> 00:18:49,279 私たちは一週間前に何A何と言った 文字列は、実際にはボンネットの下にある? 398 00:18:49,279 --> 00:18:50,320 聴衆:文字の配列です。 399 00:18:50,320 --> 00:18:52,111 DAVIDマラン:それは 文字の配列、右か? 400 00:18:52,111 --> 00:18:55,760 だから私たちはの配列を持っているかもしれません 文字列が、今度は、文字列 401 00:18:55,760 --> 00:18:57,150 文字の配列です。 402 00:18:57,150 --> 00:19:00,010 だから私は本当になりたい場合は、 私はこの絵を描く肛門、 403 00:19:00,010 --> 00:19:03,290 私は実際に描画されるべきである もう少しこのようなこと、 404 00:19:03,290 --> 00:19:08,000 それによってこれらのそれぞれで 私のargv配列のインデックス、 405 00:19:08,000 --> 00:19:11,432 文字列全体は、それ自体がある それ自体が配列であること。 406 00:19:11,432 --> 00:19:13,140 そして今、白い嘘 今日は言っている 407 00:19:13,140 --> 00:19:15,181 絵にはないということです 非常にこのように見えます。 408 00:19:15,181 --> 00:19:19,110 実際には、小さな正方形がある 大きな長方形の一般的に外に 409 00:19:19,110 --> 00:19:19,610 そこ。 410 00:19:19,610 --> 00:19:21,280 しかし、私たちはずっと前に戻ったのと来る。 411 00:19:21,280 --> 00:19:25,440 しかし、これは、バックスラッシュ./hello 0です それは、その特殊文字であること 412 00:19:25,440 --> 00:19:28,310 文字列の終わりを画定する、 私たちは後に別のものを持っている 413 00:19:28,310 --> 00:19:29,360 Zamylaの名前。 414 00:19:29,360 --> 00:19:30,900 だから、これは何を意味するのでしょうか? 415 00:19:30,900 --> 00:19:33,410 >> さて、私が先に行く聞かせて 他の二つの例を開く 416 00:19:33,410 --> 00:19:35,220 オンラインで利用可能であることを。 417 00:19:35,220 --> 00:19:40,590 一つはargv1.cと呼ばれている 他方はargv2ある。 418 00:19:40,590 --> 00:19:44,260 それは、その超簡単なプログラムです 過去の番組とは異なります 419 00:19:44,260 --> 00:19:47,260 その中で今私が使用しています argcとargvをここに。 420 00:19:47,260 --> 00:19:54,300 そして今、私はforループと統合してい argcは、最大上のi = 0のから、18行中。 421 00:19:54,300 --> 00:19:56,850 そして、何私はするつもりです ここでのコード行で? 422 00:19:56,850 --> 00:19:58,270 英語で。 423 00:19:58,270 --> 00:20:00,510 これは明らかには、argcの使用方法を示します。 424 00:20:00,510 --> 00:20:03,670 しかし、英語では、どのようなことを行い 私はこのプログラムを実行する場合、それは何? 425 00:20:03,670 --> 00:20:04,366 うん? 426 00:20:04,366 --> 00:20:07,386 >> 聴衆:それはあなたを印刷するために起こっている あなたが好きな回数だけ画面。 427 00:20:07,386 --> 00:20:08,260 DAVIDマラン:その通りです。 428 00:20:08,260 --> 00:20:10,480 だから、どんな言葉I プロンプトで、それはだ 429 00:20:10,480 --> 00:20:13,120 逆流しよう 私のこと、それらを1行に1つずつ。 430 00:20:13,120 --> 00:20:14,370 それでは、先に行くと、これをやらせる。 431 00:20:14,370 --> 00:20:17,862 私のディレクトリに行こう とargv1 ./argv1を作るのですか。 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 そして今、のはそれをシンプルに保つみましょう。 434 00:20:21,770 --> 00:20:23,834 それでは、最初は何もしませんしましょう​​。 435 00:20:23,834 --> 00:20:26,750 それは一つのことをプリントアウトしたし、 それは確かにプログラムの名前ですが、 436 00:20:26,750 --> 00:20:28,240 それは、ブラケット0でだからです。 437 00:20:28,240 --> 00:20:33,290 私は今のfooと言うなら、それはどうするつもりだ これら二つの、そして私がfooバーを言えば、 438 00:20:33,290 --> 00:20:35,580 それはこれらの3つのことを言おうとしています。 439 00:20:35,580 --> 00:20:37,740 今では多分、やや興味深い。 440 00:20:37,740 --> 00:20:41,450 しかし、それはargvをリコール 文字列の配列である、 441 00:20:41,450 --> 00:20:45,960 が、文字列は文字の配列である、 私たちは、ノッチ物事を取ることができます 442 00:20:45,960 --> 00:20:48,560 その基本を適用 ロジックとコードを作ること 443 00:20:48,560 --> 00:20:51,160 確かに、もう少し不可解に見える。 444 00:20:51,160 --> 00:20:53,540 しかし、入れ子になったことで 似ループ、何か 445 00:20:53,540 --> 00:20:57,030 あなたはマリオを思い出しかもしれないものを、 例えば、あなたはこのようにそれをした場合。 446 00:20:57,030 --> 00:21:00,380 >> だから今私は、19行目に気付く 再び私の引数を反復、 447 00:21:00,380 --> 00:21:02,410 0からのargcまでの上。 448 00:21:02,410 --> 00:21:05,510 そして今、ライン21--に私は今 最後week--からトリックを借りる 449 00:21:05,510 --> 00:21:11,090 私は何であるかチェックしております argvはブラケット、iの長さ。 450 00:21:11,090 --> 00:21:12,920 私はn個でその答えを保存するよ。 451 00:21:12,920 --> 00:21:18,230 そして私はjから上に統合してい jが0に初期化されるまでのn、。 452 00:21:18,230 --> 00:21:19,460 だから、カウントするための規約。 453 00:21:19,460 --> 00:21:22,335 あなたが持っている場合は、私が使用したら ネストされたループは、あなたが再び私を使用することはできません 454 00:21:22,335 --> 00:21:25,770 そうしないと、潜在的に、壊します、 内側のループの外の値。 455 00:21:25,770 --> 00:21:27,200 だから私は、慣例によりJを使用しています。 456 00:21:27,200 --> 00:21:28,020 私たちは、Kを使用する場合があります。 457 00:21:28,020 --> 00:21:31,080 おそらく、あなたがkよりも多くを持っている場合は、 一般的に、あまりにも多くのネストを持っている。 458 00:21:31,080 --> 00:21:33,800 しかし、今、私のprintfに気付く ラインが​​少し異なります。 459 00:21:33,800 --> 00:21:37,520 私は私は今、%sが印刷されないよ もちろん、印刷%cが、 460 00:21:37,520 --> 00:21:39,460 char型のプレースホルダです。 461 00:21:39,460 --> 00:21:40,770 >> そして今、この構文に注目してください。 462 00:21:40,770 --> 00:21:41,270 新しい。 463 00:21:41,270 --> 00:21:42,630 私たちは前にそれを見ていない。 464 00:21:42,630 --> 00:21:47,290 しかし、論理的に、これはただの意味 ARGV内のi番目の文字列を取得 465 00:21:47,290 --> 00:21:50,067 何j番目のですか? 466 00:21:50,067 --> 00:21:50,900 聴衆:文字。 467 00:21:50,900 --> 00:21:52,800 DAVIDマラン:その文字列の文字。 468 00:21:52,800 --> 00:21:57,100 だから、角括弧を使用することにより 角括弧が続く、 469 00:21:57,100 --> 00:22:00,390 これは最初のダイビングです argvは文字列への、 470 00:22:00,390 --> 00:22:02,225 その後、第2 jに角括弧 471 00:22:02,225 --> 00:22:06,580 の文字にダイビングです argvの中で、特定の文字列。 472 00:22:06,580 --> 00:22:09,562 そして、ちょうど良い測定のために、 私はここに新しい行を印刷しています。 473 00:22:09,562 --> 00:22:12,020 だから今私が先に行くと、開いてみましょう 大きめ窓アップ 474 00:22:12,020 --> 00:22:13,600 私たちはこの動作を確認することができます。 475 00:22:13,600 --> 00:22:15,700 私はそのフォルダに行きましょう。 476 00:22:15,700 --> 00:22:22,550 そして今、作るのですかargvは、2 - ARGV-2を作るwhoops--、./argv 2。 477 00:22:22,550 --> 00:22:23,110 入力してください。 478 00:22:23,110 --> 00:22:24,860 そして、それは少し難しい 縦に読むため、 479 00:22:24,860 --> 00:22:27,920 それは確かに名だ 空白行に続くプログラム。 480 00:22:27,920 --> 00:22:30,210 今、私が先に行くとfooをやらせる。 481 00:22:30,210 --> 00:22:33,210 同様に読みにくいが、それはだ 確かに1行に1つの文字を印刷する。 482 00:22:33,210 --> 00:22:36,780 そして、私はバーをすれば、それは今だ 行して、これらの行を印刷する。 483 00:22:36,780 --> 00:22:40,140 だからここにお持ち帰りはあまりありません うわー、この巧妙な新しいトリックを見て、あることを 484 00:22:40,140 --> 00:22:44,750 どこに内容を得ることができます 配列の特定の文字の、 485 00:22:44,750 --> 00:22:48,380 むしろどうやってこれらの基本を取っている 配列にインデックス付けするようなアイデア、 486 00:22:48,380 --> 00:22:51,620 そして、その後にインデックスを付ける その配列にあった配列、 487 00:22:51,620 --> 00:22:56,180 ちょうど同じ考えを適用する もう少し洗練された例。 488 00:22:56,180 --> 00:22:59,560 しかし、基本は本当に持っていない でも、先週から、変更しました。 489 00:22:59,560 --> 00:23:02,350 >> さて、これは、一種のタイムリーである その中で、0週目になり、リコール 490 00:23:02,350 --> 00:23:04,110 私たちはこのような電話帳と共演。 491 00:23:04,110 --> 00:23:06,670 そして、これは明らかであるにもかかわらず、 紙の物理的な作品、 492 00:23:06,670 --> 00:23:09,150 あなたが親切なのを考えることができます 配列として電話帳。 493 00:23:09,150 --> 00:23:12,770 確かに、あなたがいた場合には再実装する この紙片これらの作品 494 00:23:12,770 --> 00:23:15,260 コンピュータ内の、おそらく あなたが何かを使用します 495 00:23:15,260 --> 00:23:20,270 それらのすべてを格納する配列のような すべての方法から名前と番号 496 00:23:20,270 --> 00:23:23,800 Z.を通してだから、これはあるため、いいです それは私たちに機会を可能にし、 497 00:23:23,800 --> 00:23:28,310 おそらく、どのように考慮すべきかもしれない 実際にそのようなものを実装しています。 498 00:23:28,310 --> 00:23:31,250 ここで、ドアのシリーズと同様に。 499 00:23:31,250 --> 00:23:36,380 私はcould--のであれば私たちはいずれかが必要 アップ時に来てボランティア。 500 00:23:36,380 --> 00:23:36,980 見てみましょう。 501 00:23:36,980 --> 00:23:40,650 おそらくなじみのない顔、 おそらくなじみのない顔。 502 00:23:40,650 --> 00:23:42,090 どのようにオレンジ色はどうですか? 503 00:23:42,090 --> 00:23:42,680 ここに。 504 00:23:42,680 --> 00:23:45,870 オレンジシャツは、アップ時に来る。 505 00:23:45,870 --> 00:23:52,230 >> それでは、先に行こうと移動 側へのオーバーこれらのドア、 506 00:23:52,230 --> 00:23:54,020 ちょっと邪魔にならないように、これらを移動します。 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 あなたの名前は? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVIDマラン:アジャイ。 511 00:23:58,655 --> 00:23:58,680 デビッド。 512 00:23:58,680 --> 00:23:59,451 よろしくね。 513 00:23:59,451 --> 00:23:59,950 かしこまりました。 514 00:23:59,950 --> 00:24:04,500 だから私たちは、これら6つの後ろに持っている screen--上にデジタルドア 515 00:24:04,500 --> 00:24:07,810 または、むしろ、7戸 数字の全体の束をscreen--。 516 00:24:07,810 --> 00:24:10,099 そして、私はあなたに何も言わなかったしました advance--で合意された? 517 00:24:10,099 --> 00:24:11,140 AJAY:事前に何もない。 518 00:24:11,140 --> 00:24:14,730 DAVIDマラン:私はあなたがしたいすべて 今の私を見つけることであり、私たちのために、 519 00:24:14,730 --> 00:24:20,920 本当に、数50、 一歩ずつ。 520 00:24:20,920 --> 00:24:21,830 >> AJAY:ナンバー50? 521 00:24:21,830 --> 00:24:22,580 >> DAVIDマラン:ナンバー50。 522 00:24:22,580 --> 00:24:24,746 そして、あなたは何を明らかにすることができます これらの各ドアの後ろに 523 00:24:24,746 --> 00:24:27,930 単純に指で触れることによって。 524 00:24:27,930 --> 00:24:31,364 ちくしょう。 [笑い] 525 00:24:31,364 --> 00:24:34,560 >> [拍手] 526 00:24:34,560 --> 00:24:39,540 >> 非常によくやった。 527 00:24:39,540 --> 00:24:40,400 [OK]をクリックします。 528 00:24:40,400 --> 00:24:44,090 私たちは素敵な贈り物を持っている ここにあなたのための賞。 529 00:24:44,090 --> 00:24:46,520 映画のお好きなものたち 先週議論した。 530 00:24:46,520 --> 00:24:47,362 >> AJAY:ああ、男。 531 00:24:47,362 --> 00:24:49,050 ああ、私はスペースボールを見たことがない。 532 00:24:49,050 --> 00:24:49,520 >> DAVIDマラン:スペースボール。 533 00:24:49,520 --> 00:24:50,140 かしこまりました。 534 00:24:50,140 --> 00:24:53,790 だから一瞬で開催しています。 535 00:24:53,790 --> 00:24:57,430 How--のはこれを作ってみよう 教えやすいmoment-- 536 00:24:57,430 --> 00:25:00,412 あなたはどのように行くのでした 番号50を見つける? 537 00:25:00,412 --> 00:25:01,370 AJAY:私はランダムに選んだ。 538 00:25:01,370 --> 00:25:03,420 DAVIDマラン:だからあなたが選んだ ランダムに幸運。 539 00:25:03,420 --> 00:25:03,790 AJAY:はい。 540 00:25:03,790 --> 00:25:04,456 DAVIDマラン:わかりました。 541 00:25:04,456 --> 00:25:05,050 優秀。 542 00:25:05,050 --> 00:25:08,470 だから今、あなたをしていなかった 他に何、幸運得 543 00:25:08,470 --> 00:25:10,210 これらのドアの後ろに起きているのでしょうか? 544 00:25:10,210 --> 00:25:12,930 だから私は先に行くとした場合 ここでこれらの数字を明らかにし、 545 00:25:12,930 --> 00:25:15,180 彼らは実際にランダムな順序である。 546 00:25:15,180 --> 00:25:17,750 そして、最高のは、あなたは可能性があり 行われ、率直に言って、最終的には、することです、 547 00:25:17,750 --> 00:25:19,410 最悪の場合には、それらをすべてチェックする。 548 00:25:19,410 --> 00:25:23,000 だから、超幸運れる 私たちはアルゴリズムを呼びたいものではありません。 549 00:25:23,000 --> 00:25:24,730 はい、おめでとう。 550 00:25:24,730 --> 00:25:27,010 あなたができればしかし、今、ユーモアに私をlet's--。 551 00:25:27,010 --> 00:25:28,310 それではここで、このタブに行きましょう。 552 00:25:28,310 --> 00:25:31,460 そして、ここでの数字は明らかにしている ランダムな順序であると思われるもの、 553 00:25:31,460 --> 00:25:32,280 彼らはいた。 554 00:25:32,280 --> 00:25:35,160 しかし、今私が代わりに主張した場合 これらのドアの後ろにその 555 00:25:35,160 --> 00:25:39,070 ソートされている数である。 556 00:25:39,070 --> 00:25:41,780 目標は、今までにもあり 私たちに数50を見つける。 557 00:25:41,780 --> 00:25:45,910 しかし、アルゴリズム的にそれを行うと、 あなたはそれについてどのように行っている私たちに教えてください。 558 00:25:45,910 --> 00:25:48,020 あなたがそれを見つけた場合、あなたは映画をキープ。 559 00:25:48,020 --> 00:25:49,520 あなたは、あなたがそれを返して、​​それを見つけることはありません。 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY:だから私は両端をチェックするつもりだ まず、there's--かどうかを判断する 562 00:25:58,112 --> 00:26:02,048 [笑いと拍手] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVIDマラン:ここに行く。 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 それでは1を見てみましょう アジャイの前任者、 567 00:26:21,700 --> 00:26:25,450 それほど幸運ではなかったショーン。 568 00:26:25,450 --> 00:26:28,670 [OK]を、ここにあなたの仕事ので、 ショーンは、以下の通りである。 569 00:26:28,670 --> 00:26:32,970 私はこれらの背後に隠されている ドア数7、 570 00:26:32,970 --> 00:26:37,200 しかし、これらのドアのいくつかで隠れて 同様に他の非負の数である。 571 00:26:37,200 --> 00:26:40,730 そして、あなたの目標は、この考えることです ちょうど配列として数字の一番上の行。 572 00:26:40,730 --> 00:26:43,590 私たちは作品のちょうど順序だ その背後にある番号の紙の。 573 00:26:43,590 --> 00:26:47,640 そして、あなたの目標は、上部のみを使用して、ある ここでアレイは、私に番号7を見つける。 574 00:26:47,640 --> 00:26:51,200 そして、私たちはそれから批評しようとしている どのようにあなたがそれをやって行く。 575 00:26:51,200 --> 00:26:52,920 、私たちに数7をお願いして下さい。 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 いいえ 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5、19、13。 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 それはトリックの質問ではありません。 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1。 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 この時点で、あなたのスコアは非常にではありません 良いので、あなたにも続けるかもしれません。 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3。 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 進んでください。 590 00:27:39,802 --> 00:27:42,510 率直に言って、私は助けることは不思議ではないことができ 何をしても考えている。 591 00:27:42,510 --> 00:27:44,990 >> ショーン:私は一番上の行から取ることができます。 592 00:27:44,990 --> 00:27:46,240 DAVIDマラン:唯一の一番上の行。 593 00:27:46,240 --> 00:27:47,281 だから、3左を持っている。 594 00:27:47,281 --> 00:27:48,310 だから私7見つける。 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [観客は提案を叫ぶ] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 だから、それらの両方が驚くべきだった 非常に異なった理由のために。 599 00:28:26,130 --> 00:28:29,150 だから、これはどこに私たち 先ほど中断し、 600 00:28:29,150 --> 00:28:32,530 そしてここで重要な洞察力 これらのドアは番号を有していた 601 00:28:32,530 --> 00:28:37,390 その背後に、理想的に分類したもの あなたができることであるためにお持ち帰り 602 00:28:37,390 --> 00:28:39,670 根本的に、より良い この第二のexample-- 603 00:28:39,670 --> 00:28:42,380 そして、確かに、それはショーンのだった 乱数で最初の試み 604 00:28:42,380 --> 00:28:45,460 とすぐに同じようにbefore--が、 これらの番号がソートされているように、 605 00:28:45,460 --> 00:28:47,980 電話帳のような多く、 あなたは明らかに何ができますか? 606 00:28:47,980 --> 00:28:50,090 またはどのようにあなたはその知識を活用することができますか? 607 00:28:50,090 --> 00:28:51,530 うん。 608 00:28:51,530 --> 00:28:54,910 >> 聴衆:あなたは[聞こえない]途中で行く。 609 00:28:54,910 --> 00:28:55,660 DAVIDマラン:うん。 610 00:28:55,660 --> 00:28:56,160 その通り。 611 00:28:56,160 --> 00:28:59,680 だから、アジャイの初期本能だった 今思い出すと、両端をチェックする、 612 00:28:59,680 --> 00:29:02,320 そして、私たちは、ソートの仕上がり すぐに例。 613 00:29:02,320 --> 00:29:05,220 しかし、私たちはこれより多くのことを行うために開始した場合 念入りにそれらの線に沿って、 614 00:29:05,220 --> 00:29:07,860 しかし中におそらく始まる 真ん中、彼らはソートしているので、 615 00:29:07,860 --> 00:29:10,900 とすぐに私たちが明らかにしたよう 数16、したがって、私たちknow-- 616 00:29:10,900 --> 00:29:14,850 との私たちthat--正確にやらせる 従って、今日の場合には、その50を知っている、 617 00:29:14,850 --> 00:29:16,080 右になるように持っている。 618 00:29:16,080 --> 00:29:18,735 だから様、0週目における 私たちは半分に電話帳を引き裂いた 619 00:29:18,735 --> 00:29:21,490 との半分を投げた 問題離れて、ここに同じ考え。 620 00:29:21,490 --> 00:29:23,680 私たちは、この半分を投げることができる 問題の離れ。 621 00:29:23,680 --> 00:29:25,730 そして、おそらく何 アルゴリズム的に行う可能性があり、 622 00:29:25,730 --> 00:29:28,710 あなたは50でなければならないことを知っていたら、 右側に、それはどこでもだ場合、 623 00:29:28,710 --> 00:29:31,390 真ん中に、そこに試している 残りのドア。 624 00:29:31,390 --> 00:29:33,450 もちろん、50はより高い 42よりも、私たちはすることができます 625 00:29:33,450 --> 00:29:36,060 この残りを投げる 問題の四分の一の距離、 626 00:29:36,060 --> 00:29:38,510 そして、最後に、同定 50のようなもの。 627 00:29:38,510 --> 00:29:41,050 しかし、単にと同様 電話帳、これらの数字 628 00:29:41,050 --> 00:29:44,560 すでに私たちに与えられた ソート順、私たちを残し 629 00:29:44,560 --> 00:29:47,450 あなたがどの​​ように疑問を持つ ソートされた順序に事を得る? 630 00:29:47,450 --> 00:29:49,640 そして、率直に言って、どのようなコストで? 631 00:29:49,640 --> 00:29:51,390 それはあることが一つのことだ 電話帳を手渡した 632 00:29:51,390 --> 00:29:54,810 してから見つけることによってあなたの友人を感心 本当にすぐに電話番号、右? 633 00:29:54,810 --> 00:29:58,520 見つけて32ページを引き裂く 40億のページのうち一人、 634 00:29:58,520 --> 00:30:00,470 私たちは極端な例であると述べた。 635 00:30:00,470 --> 00:30:03,320 しかし、それはどのくらいの時間がかかりました Verizonは、その電話帳をソートするには? 636 00:30:03,320 --> 00:30:06,170 どのくらいの時間、それは私たちを取るんでした これらの7つの数字を並べ替えるには? 637 00:30:06,170 --> 00:30:10,110 それが私たちがした質問です これまで完全に無視。 638 00:30:10,110 --> 00:30:12,330 >> それでは、今、この質問に答えてみましょう。 639 00:30:12,330 --> 00:30:15,920 そして、私たちは、今、すべての映画の外出 私たちは、いくつかのストレスボールを持っている。 640 00:30:15,920 --> 00:30:19,480 たとえば、もし、8人のボランティア ここに私たちを結ぶ気にしないだろう? 641 00:30:19,480 --> 00:30:24,100 それでは先に行くとしましょう​​、方法について あなたの4、ここでの3? 642 00:30:24,100 --> 00:30:25,290 いくつかの新しい顔を取得します。 643 00:30:25,290 --> 00:30:27,220 そして、そこには4? 644 00:30:27,220 --> 00:30:30,760 そしてhere--しないバイアスしてみましょうとnow-- ここで端のオーバー数8。 645 00:30:30,760 --> 00:30:32,060 アップさあ。 646 00:30:32,060 --> 00:30:32,560 かしこまりました。 647 00:30:32,560 --> 00:30:37,480 だから、私たちがここに持っているもの あなたのそれぞれは数値です。 648 00:30:37,480 --> 00:30:40,055 あなたが行きたい場合は 先に、この数値を取る。 649 00:30:40,055 --> 00:30:40,763 あなたの名前は? 650 00:30:40,763 --> 00:30:41,950 >> ARTIE:アーティ。 651 00:30:41,950 --> 00:30:43,100 >> DAVIDマラン:アーティ、大丈夫。 652 00:30:43,100 --> 00:30:44,297 あなたが1番だ。 653 00:30:44,297 --> 00:30:45,310 >> AMIN:アミン。 654 00:30:45,310 --> 00:30:46,060 DAVIDマラン:アミン。 655 00:30:46,060 --> 00:30:46,820 デビッド。 656 00:30:46,820 --> 00:30:47,530 あなたはナンバー2だ。 657 00:30:47,530 --> 00:30:49,100 そして、私の手のように、先に行く あなた用紙、 658 00:30:49,100 --> 00:30:52,130 音楽の前で自分をラインアップ そこに同じ順序で立っている。 659 00:30:52,130 --> 00:30:52,660 >> ANDY:こんにちは、アンディ。 660 00:30:52,660 --> 00:30:53,970 >> DAVIDマラン:アンディ、それはあなたを見てうれしいです。 661 00:30:53,970 --> 00:30:54,520 ナンバー3。 662 00:30:54,520 --> 00:30:55,310 >> JACOB:ジェイコブ。 663 00:30:55,310 --> 00:30:56,760 >> DAVIDマラン:ヤコブ、番号4。 664 00:30:56,760 --> 00:30:57,549 ご搭乗ありがとうございます。 665 00:30:57,549 --> 00:30:58,090 GRANT:グラント。 666 00:30:58,090 --> 00:30:58,881 DAVIDマラン:グラント。 667 00:30:58,881 --> 00:31:00,348 番号5。 668 00:31:00,348 --> 00:31:01,200 >> アラナ:アラナ。 669 00:31:01,200 --> 00:31:02,766 >> DAVIDマラン:アラナ、番号6。 670 00:31:02,766 --> 00:31:03,589 >> FRANCES:フランシス。 671 00:31:03,589 --> 00:31:04,880 DAVIDマラン:フランシス、7番。 672 00:31:04,880 --> 00:31:05,200 と? 673 00:31:05,200 --> 00:31:05,830 >> レイチェル:レイチェル。 674 00:31:05,830 --> 00:31:06,815 >> DAVIDマラン:レイチェル、8番。 675 00:31:06,815 --> 00:31:07,100 かしこまりました。 676 00:31:07,100 --> 00:31:08,766 先に行くと、この順序で自分自身を取得。 677 00:31:08,766 --> 00:31:11,440 私は残りの1を入れてみましょう 音楽は場所に立つ。 678 00:31:11,440 --> 00:31:13,670 どこでスタンドが必要なのですか? 679 00:31:13,670 --> 00:31:14,170 [OK]をクリックします。 680 00:31:14,170 --> 00:31:18,710 先に行くとちょうどあなたの数字を入れて 観客はそれらを見ることができ、 681 00:31:18,710 --> 00:31:20,340 音楽は外側を向く立つ。 682 00:31:20,340 --> 00:31:27,240 うまくいけば、私たちの最初の 健全性チェックhere-- 4,2、6。 683 00:31:27,240 --> 00:31:27,890 ああ、ああ。 684 00:31:27,890 --> 00:31:29,070 ちょっと待ってください。 685 00:31:29,070 --> 00:31:31,140 私たちは、8を持っていません。 686 00:31:31,140 --> 00:31:35,180 私はからあなたを立ち退かする必要がある 何とか例。 687 00:31:35,180 --> 00:31:35,680 いいえ 688 00:31:35,680 --> 00:31:36,940 いいえ、それはOKです。 689 00:31:36,940 --> 00:31:37,890 見てみましょう。 690 00:31:37,890 --> 00:31:38,880 私たちは、これを行うことができます。 691 00:31:38,880 --> 00:31:39,440 スタンバイ。 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 そうしよう。 694 00:31:45,740 --> 00:31:46,800 正しい。 695 00:31:46,800 --> 00:31:47,360 かしこまりました。 696 00:31:47,360 --> 00:31:50,260 だから、今私たちは8,1、3〜7、5を持っている。 697 00:31:50,260 --> 00:31:50,760 [OK]をクリックします。 698 00:31:50,760 --> 00:31:51,360 優秀。 699 00:31:51,360 --> 00:31:54,400 >> だから手元に疑問がでている どのコスト、およびどのような方法を経由して、 700 00:31:54,400 --> 00:31:58,580 私たちは実際に、ここでこれらの数値を並べ替えることができます 私たちは親切の後方に働くことができるように、 701 00:31:58,580 --> 00:32:02,759 最終的に、そしてdecide--それは本当にある 印象的な、それは本当に効率的である、 702 00:32:02,759 --> 00:32:04,550 私が分裂することができることと 電話帳を征服? 703 00:32:04,550 --> 00:32:06,716 その本当に効率的です 私は分割し、征服することができます 704 00:32:06,716 --> 00:32:08,600 これらのデジタル作品 ボード上の紙、 705 00:32:08,600 --> 00:32:14,500 多分それは私達にコストになるだろう場合は、 時間やエネルギーやCPUサイクルで占い 706 00:32:14,500 --> 00:32:17,340 実際に私たちのデータを取得する いくつかのソートされた順番に? 707 00:32:17,340 --> 00:32:18,930 それでは、その質問をしましょう​​。 708 00:32:18,930 --> 00:32:22,077 >> したがって、最初のオフ、これらの数字は、 かなりランダムな順序で、 709 00:32:22,077 --> 00:32:24,160 と私は提案するつもりです つのアルゴリズム、またはプロセス 710 00:32:24,160 --> 00:32:25,970 それによって、私たちは、これらの人たちを並べ替えることができます。 711 00:32:25,970 --> 00:32:28,100 私はアプローチするつもりです これはかなり単純に。 712 00:32:28,100 --> 00:32:30,730 そして、私は認識するつもりです それは私のためにたくさんのようなものだという 713 00:32:30,730 --> 00:32:32,890 まわりで私の心をラップする 全データを一度に設定してください。 714 00:32:32,890 --> 00:32:33,640 しかし、あなたは何を知っていますか? 715 00:32:33,640 --> 00:32:37,450 私はいくつかをするつもりだ 非常にシンプルな限界の修正。 716 00:32:37,450 --> 00:32:41,152 場合4および図2は、順不同である 目標は、最大8に1から行くことです。 717 00:32:41,152 --> 00:32:41,860 それで、あなたは何を知っていますか? 718 00:32:41,860 --> 00:32:43,776 私はあなたを持っているつもりです あなたが切り替えるとみんな、スワップ 719 00:32:43,776 --> 00:32:46,380 物理的な位置と 紙のあなたの作品。 720 00:32:46,380 --> 00:32:47,894 今、図4及び図6に、これらは順序である。 721 00:32:47,894 --> 00:32:49,060 私はそれらのことを残すつもりです。 722 00:32:49,060 --> 00:32:50,227 図6及び図8に示すように、それらが順序である。 723 00:32:50,227 --> 00:32:51,185 あること、それらを残して行く。 724 00:32:51,185 --> 00:32:52,170 順不同8 AND1、。 725 00:32:52,170 --> 00:32:54,790 次の2つのスワップを気にしないだろう場合は。 726 00:32:54,790 --> 00:32:57,300 今、8および図3に示すように、君たちは入れ替えることができれば。 727 00:32:57,300 --> 00:32:59,320 8,7、君たちは入れ替えることができれば。 728 00:32:59,320 --> 00:33:01,790 そして8および図5に示すように、君たちは入れ替えることができれば。 729 00:33:01,790 --> 00:33:03,980 >> 今、私は行っています? 730 00:33:03,980 --> 00:33:05,200 いや、明らかではない。 731 00:33:05,200 --> 00:33:07,880 しかし、私が作った より良い状況、右か? 732 00:33:07,880 --> 00:33:09,430 8番、もう一度お名前は何でしたか? 733 00:33:09,430 --> 00:33:10,055 >> レイチェル:レイチェル。 734 00:33:10,055 --> 00:33:12,850 DAVIDマラン:だからレイチェルが持っている 効果的にかなり遠くまで泡立て、 735 00:33:12,850 --> 00:33:15,660 の最後にすべての方法 ここで数字の私の配列。 736 00:33:15,660 --> 00:33:17,310 そしてその結果、問題は解決の一種である。 737 00:33:17,310 --> 00:33:21,670 さて、明らかに、2はまだする必要があります 少し移動し、4と6と1。 738 00:33:21,670 --> 00:33:24,420 しかし、私は得ているように見える ソリューションにもう少し近く。 739 00:33:24,420 --> 00:33:26,790 それでは、この同じを適用できます 再びナイーブヒューリスティック。 740 00:33:26,790 --> 00:33:27,690 2及び図4に示すように、[OK]をクリックします。 741 00:33:27,690 --> 00:33:28,810 4および図6に示すように、[OK]をクリックします。 742 00:33:28,810 --> 00:33:29,930 6、1、MM-mmである。 743 00:33:29,930 --> 00:33:32,230 のスワップをしてみましょう。 744 00:33:32,230 --> 00:33:33,200 6と3、MM-mmである。 745 00:33:33,200 --> 00:33:34,420 のスワップをしてみましょう。 746 00:33:34,420 --> 00:33:35,580 図6、図7はOKです。 747 00:33:35,580 --> 00:33:36,590 7,5、いや。 748 00:33:36,590 --> 00:33:37,790 のスワップをしてみましょう。 749 00:33:37,790 --> 00:33:38,470 そして今、7と8。 750 00:33:38,470 --> 00:33:39,862 そして、あなたの名前が再び何ですか? 751 00:33:39,862 --> 00:33:40,570 FRANCES:フランシス。 752 00:33:40,570 --> 00:33:41,445 DAVIDマラン:フランシス。 753 00:33:41,445 --> 00:33:44,230 だから今フランシスはさらに良いです 位置、今7と8理由 754 00:33:44,230 --> 00:33:46,440 正しく頂上まで泡立てている。 755 00:33:46,440 --> 00:33:47,510 だから2及び図4に示すように、[OK]をクリックします。 756 00:33:47,510 --> 00:33:48,720 4と1、交換しよう。 757 00:33:48,720 --> 00:33:50,410 4,3、交換しよう。 758 00:33:50,410 --> 00:33:51,550 4と6、あなたは大丈夫。 759 00:33:51,550 --> 00:33:53,340 6,5、交​​換しよう。 760 00:33:53,340 --> 00:33:54,590 そして今、それらの人が良いです。 761 00:33:54,590 --> 00:33:55,780 私たちはほとんどがしています。 762 00:33:55,780 --> 00:33:57,706 2と1、順不同で、そのように交換します。 763 00:33:57,706 --> 00:33:59,080 そして今、私は健全性チェックを行うことができます。 764 00:33:59,080 --> 00:34:03,080 2及び3,3及び4,4及び 5,5及び6,6及び7,8。 765 00:34:03,080 --> 00:34:05,060 [OK]を、私たちは完了です。 766 00:34:05,060 --> 00:34:09,310 >> しかし、どのようなコストで私でした ここでこれらの数字を並べ替える? 767 00:34:09,310 --> 00:34:13,960 さて、どのように多くの手順は、潜在的に私をしました これらの人たちをソートするとき取る? 768 00:34:13,960 --> 00:34:15,710 さて、私たちは戻ってその質問へ来る。 769 00:34:15,710 --> 00:34:18,030 しかし、率直に言って、あなたが得た場合 それはだ、少し退屈 770 00:34:18,030 --> 00:34:22,270 これではなかったという点で明らかにするようなもの 多分、最も効率的なアルゴリズム。 771 00:34:22,270 --> 00:34:25,230 そして実際、率直に言って、私は汗をかいています すべてのより多くの前後に歩く。 772 00:34:25,230 --> 00:34:26,639 つまり、特に効率感じませんでした。 773 00:34:26,639 --> 00:34:27,805 それでは、何か他のものを試してみましょう。 774 00:34:27,805 --> 00:34:31,870 君たちはリセットができれば これらの8つの値に簡単です。 775 00:34:31,870 --> 00:34:32,969 よくできました。 776 00:34:32,969 --> 00:34:36,570 >> ちょうどのために、デジタル的に見てみましょう 私たちが何かをしようとする前に一瞬、 777 00:34:36,570 --> 00:34:38,179 ちょうど何が起こったかで。 778 00:34:38,179 --> 00:34:41,330 ここまでは、次のように表示しようとしている これらの8つの人間の視覚化 779 00:34:41,330 --> 00:34:44,719 これにより、青と赤 バーは、数を表す。 780 00:34:44,719 --> 00:34:46,670 背の高いバー、 数より大きい。 781 00:34:46,670 --> 00:34:48,510 バーが短いほど、 数が小さい。 782 00:34:48,510 --> 00:34:51,560 そして、何を見に行くているのはである そのうちの8よりもランダムな順序。 783 00:34:51,560 --> 00:34:55,830 あなたは、これらのバーを参照してくださいとしている その同じアルゴリズムでソートさばかり、 784 00:34:55,830 --> 00:34:59,890 あるいは、説明書のセットを 私たちは、バブルソート以後呼ぶことにします。 785 00:34:59,890 --> 00:35:04,000 だから、第二またはので、すべて、気付く 二つのバーは、赤で点灯している 786 00:35:04,000 --> 00:35:05,590 コンピュータによって比較されている。 787 00:35:05,590 --> 00:35:08,630 そして、もし大きなバーと 小さなバーは、順不同です 788 00:35:08,630 --> 00:35:11,220 彼らは私のために交換されている。 789 00:35:11,220 --> 00:35:15,120 >> さて、これは信じられないほど退屈です 確かに、これを見て、 790 00:35:15,120 --> 00:35:18,630 非常に長いために、しかし気付く 、右に移動する大きな棒をtakeaway-- 791 00:35:18,630 --> 00:35:20,460 左に移動する小さなバー。 792 00:35:20,460 --> 00:35:23,380 では、このプロセスを中断しましょう これをスピードアップ 793 00:35:23,380 --> 00:35:27,330 はるかに高速であるので、缶に 何の高レベルの感覚を得る、 794 00:35:27,330 --> 00:35:29,970 確かに、バブルソートをやっている。 795 00:35:29,970 --> 00:35:33,150 実際、最大バブリングだ リストの右側に、 796 00:35:33,150 --> 00:35:35,260 または配列、大きなバー。 797 00:35:35,260 --> 00:35:40,020 逆に、小さなバーがある ダウン左に自分の道をバブリング、 798 00:35:40,020 --> 00:35:42,950 速いペースではあるが 私たちは以前と比べて。 799 00:35:42,950 --> 00:35:45,850 だから、人間と見ることが難しく、 しかし、視覚的にそれは確かに何 800 00:35:45,850 --> 00:35:46,540 起こっていた。 801 00:35:46,540 --> 00:35:49,110 >> しかし、ここでは基本的に試してみましょう 異なるアプローチになりました。 802 00:35:49,110 --> 00:35:52,387 それでは別のを試してみましょう 私たちはあなたを持っていることによって、アルゴリズム 803 00:35:52,387 --> 00:35:59,640 人はこれらのオリジナルでスタート この順序がここにいた位置。 804 00:35:59,640 --> 00:36:00,827 そして今度は、先に行きましょう。 805 00:36:00,827 --> 00:36:02,910 そして、私は何かをするつもりだ さらに簡単な、右か? 806 00:36:02,910 --> 00:36:06,710 振り返ってみると、再びペアワイズスワッピング そして再び、ほとんど少し賢い。 807 00:36:06,710 --> 00:36:10,460 さんはもっと単純に物事をやってみましょう、 どこに私はこれらの人たちをソートする場合、 808 00:36:10,460 --> 00:36:12,560 私は見ているだけキープしましょう 最小の要素のために。 809 00:36:12,560 --> 00:36:14,570 だから今は、4です 私が見てきた最小数。 810 00:36:14,570 --> 00:36:15,695 私はそれを覚えているつもりです。 811 00:36:15,695 --> 00:36:17,750 いいえ、2が優れている、それを覚えています。 812 00:36:17,750 --> 00:36:20,730 図1はさらに小さい。 813 00:36:20,730 --> 00:36:21,970 3、7、5。 814 00:36:21,970 --> 00:36:22,470 [OK]をクリックします。 815 00:36:22,470 --> 00:36:23,750 選ぶ - あなたの名前は再び何ですか? 816 00:36:23,750 --> 00:36:24,400 >> ARTIE:アーティ。 817 00:36:24,400 --> 00:36:24,610 >> DAVIDマラン:アーティ。 818 00:36:24,610 --> 00:36:25,460 だから、アーティは、先に行く。 819 00:36:25,460 --> 00:36:27,043 私はラインのあなたを引っ張るつもりです。 820 00:36:27,043 --> 00:36:28,400 あなたがここに戻ってくることができれば。 821 00:36:28,400 --> 00:36:30,790 そして、私は彼のためにスペースを作る必要があります。 822 00:36:30,790 --> 00:36:32,040 ここでは決定点を持っている。 823 00:36:32,040 --> 00:36:36,000 どうやってここにアーティための余地を作るかもしれない 数字の1が所属先頭に? 824 00:36:36,000 --> 00:36:36,770 >> 聴衆:シフト。 825 00:36:36,770 --> 00:36:38,950 >> DAVIDマラン:OK、私たち 皆をシフトできた。 826 00:36:38,950 --> 00:36:40,860 しかし、最適化を提案する。 827 00:36:40,860 --> 00:36:43,410 それはちょっと迷惑な感じ 私は4人に依頼するための 828 00:36:43,410 --> 00:36:44,620 すべての方法を下に移動します。 829 00:36:44,620 --> 00:36:45,520 私は他に何ができますか? 830 00:36:45,520 --> 00:36:46,360 >> 聴衆:それらを切り替えます。 831 00:36:46,360 --> 00:36:46,850 >> DAVIDマラン:それらを切り替えます。 832 00:36:46,850 --> 00:36:47,900 そして、あなたの名前が再び何ですか? 833 00:36:47,900 --> 00:36:48,441 >> JACOB:ジェイコブ。 834 00:36:48,441 --> 00:36:50,330 DAVIDマラン:ヤコブは、移動します。 835 00:36:50,330 --> 00:36:54,440 はるかに効率的なだけで持っている アーティとジェイコブスワップの場所、 836 00:36:54,440 --> 00:36:56,710 強制とは対照的に、 これらの人たちの4つのすべての、 837 00:36:56,710 --> 00:36:58,734 に、どうもありがとうございました それらの正しい位置。 838 00:36:58,734 --> 00:37:01,150 今何アーティ約うれしいです、 彼は正しい位置にあります。 839 00:37:01,150 --> 00:37:02,060 それでは、もう一度、これをやってみましょう。 840 00:37:02,060 --> 00:37:03,730 2、それは私が見てきた最小数です。 841 00:37:03,730 --> 00:37:05,690 3、7、5。 842 00:37:05,690 --> 00:37:06,190 [OK]をクリックします。 843 00:37:06,190 --> 00:37:07,467 2は間違いなく最も小さい。 844 00:37:07,467 --> 00:37:08,550 すべての作業を行う必要はありません。 845 00:37:08,550 --> 00:37:09,320 それでは、もう一度それをやってみましょう。 846 00:37:09,320 --> 00:37:10,070 6。 847 00:37:10,070 --> 00:37:10,640 最小? 848 00:37:10,640 --> 00:37:11,140 8。 849 00:37:11,140 --> 00:37:11,590 いや。 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 ああ。 852 00:37:12,220 --> 00:37:13,420 私は4を覚えてみましょう。 853 00:37:13,420 --> 00:37:13,950 3。 854 00:37:13,950 --> 00:37:15,110 私は3を覚えてみましょう。 855 00:37:15,110 --> 00:37:16,080 7,5。 856 00:37:16,080 --> 00:37:18,490 私がした最小数 このパスで見は3です。 857 00:37:18,490 --> 00:37:20,340 あなたが出来ると思います。 858 00:37:20,340 --> 00:37:21,986 どこであなたを置くつもりですか? 859 00:37:21,986 --> 00:37:22,860 そして、あなたの名前は何ですか? 860 00:37:22,860 --> 00:37:23,530 >> アラナ:アラナ。 861 00:37:23,530 --> 00:37:25,780 >> DAVIDマラン:アラナ、私たちはしている あなたを立ち退かしているつもり。 862 00:37:25,780 --> 00:37:28,670 しかし、それは、より効率的である 2人だけを交換するために、 863 00:37:28,670 --> 00:37:31,850 複数の人を持っているよりも、 実際にオーバー回避する。 864 00:37:31,850 --> 00:37:32,850 それでは、もう一度これをやらせる。 865 00:37:32,850 --> 00:37:34,980 私は4を選択し、そのように出来るつもりです。 866 00:37:34,980 --> 00:37:36,540 誰が移動するために起こっているの? 867 00:37:36,540 --> 00:37:37,750 もちろん、数字の8、。 868 00:37:37,750 --> 00:37:40,260 私は今、5番を見つけた場合は、出来る。 869 00:37:40,260 --> 00:37:42,104 ナンバー8は再び追い出さを取得するつもりだ。 870 00:37:42,104 --> 00:37:43,770 私は今場所で6番を見つけるつもりです。 871 00:37:43,770 --> 00:37:44,410 代わりに7。 872 00:37:44,410 --> 00:37:45,080 代わりに8。 873 00:37:45,080 --> 00:37:48,590 >> 私たちが今やったことある 選択ソートと呼ばれるもの、 874 00:37:48,590 --> 00:37:52,560 私たちはこれを視覚化した場合と、それはだ ちょっと違う感じだろう。 875 00:37:52,560 --> 00:37:56,800 それでは先に行こうと、これから ここではメニュー、このvisualization-- 876 00:37:56,800 --> 00:38:02,920 それでは、Firefoxを是非to--これを変更してみましょう。 877 00:38:02,920 --> 00:38:07,610 それでは選択ソートにこれを変更してみましょう。 878 00:38:07,610 --> 00:38:11,830 そして、それでは前と同じように、それをスピードアップさせ、 そして今可視化を開始します。 879 00:38:11,830 --> 00:38:13,990 そして、このアルゴリズムはあります それとは異なる感触。 880 00:38:13,990 --> 00:38:16,480 各反復では、率直に言って、 それはさらに簡単です。 881 00:38:16,480 --> 00:38:18,385 私は最小の要素を選択することだ。 882 00:38:18,385 --> 00:38:21,510 今、率直に言って、私はその小さな幸運 時間、という点では、超高速にソート。 883 00:38:21,510 --> 00:38:22,660 要素がランダムであった。 884 00:38:22,660 --> 00:38:25,520 私たちは最終的にはよようにそれは、ありません 基本的に速く、ご覧ください。 885 00:38:25,520 --> 00:38:29,400 しかし、ここで3番目と最後を見てみましょう 何が起こっているのかを、ここでアプローチする。 886 00:38:29,400 --> 00:38:36,230 それでは、先に行くとあなたたちをリセットしてみましょう 最後に1回はここで、この順になるように。 887 00:38:36,230 --> 00:38:38,450 >> そして今、私はするつもりだ もう少し賢いこと、 888 00:38:38,450 --> 00:38:40,220 ちょうど私たちのアルゴリズムを完成します。 889 00:38:40,220 --> 00:38:41,230 私はこれを行うつもりです。 890 00:38:41,230 --> 00:38:43,140 私は行かないつもりです 前後にそんなに。 891 00:38:43,140 --> 00:38:44,900 率直に言って、私は疲れている このすべてトラバース。 892 00:38:44,900 --> 00:38:47,691 私はちょうど私がものを取るつもりだ リストの最初に与えられた、 893 00:38:47,691 --> 00:38:49,460 と私はソートするつもりです その場で、その。 894 00:38:49,460 --> 00:38:50,140 そこでここでは、ある。 895 00:38:50,140 --> 00:38:51,030 番号4。 896 00:38:51,030 --> 00:38:53,680 私は番号を挿入するつもりです ソートされたリストに4。 897 00:38:53,680 --> 00:38:54,180 完了。 898 00:38:54,180 --> 00:38:58,300 私は今主張し、ちょうどこの多くを作るために 明確な、私のリストのこの部分がソートされます。 899 00:38:58,300 --> 00:39:02,610 それは確かに愚かな主張のようなものだが、 4は、サイズ1のリストにソートされます。 900 00:39:02,610 --> 00:39:04,210 今、私は2番を取るつもりです。 901 00:39:04,210 --> 00:39:07,670 ナンバー2は、私は今に行くよ 適切な場所に挿入する。 902 00:39:07,670 --> 00:39:08,680 だからここで図2は、属しているのでしょうか? 903 00:39:08,680 --> 00:39:09,824 明らかに、こっちに。 904 00:39:09,824 --> 00:39:11,490 だから先に行くと、あなたは可能性があれば、戻って移動。 905 00:39:11,490 --> 00:39:14,406 そして、なぜあなたたちはただ取ることはありません あなたの音楽はあなたと、この時間を立っている。 906 00:39:14,406 --> 00:39:17,020 そして、強制的にしてみましょうあなたを挿入 リストの先頭に。 907 00:39:17,020 --> 00:39:17,936 だから、もう少し作業。 908 00:39:17,936 --> 00:39:20,890 私の周りヤコブを移動しなければならなかった、 そしてあなたの名前は何ですか? 909 00:39:20,890 --> 00:39:21,420 >> AMIN:アミン。 910 00:39:21,420 --> 00:39:22,270 >> DAVIDマラン:アミン。 911 00:39:22,270 --> 00:39:24,350 しかし、少なくとも、私は前後に行きませんでした。 912 00:39:24,350 --> 00:39:25,739 私が行くように私は物事を取っている。 913 00:39:25,739 --> 00:39:27,530 私はそれらを挿入しています 適切な場所にある。 914 00:39:27,530 --> 00:39:29,220 図6に示すように、これは実際には非常に簡単です。 915 00:39:29,220 --> 00:39:31,510 あなたがいる場合のは、あそこにあなたを挿入してみましょう 少しだけ上に移動したかった。 916 00:39:31,510 --> 00:39:32,870 数字の8、また非常に簡単。 917 00:39:32,870 --> 00:39:33,741 右あそこ。 918 00:39:33,741 --> 00:39:34,240 ちくしょう。 919 00:39:34,240 --> 00:39:37,590 ナンバー1私達はできないだけで ここではアミンとのスワップ、 920 00:39:37,590 --> 00:39:39,340 それが起こっているので、 台無し次まで。 921 00:39:39,340 --> 00:39:40,660 だから私たちはもう少し賢い必要があります。 922 00:39:40,660 --> 00:39:42,770 だから、アーティ、あなたができれば 一瞬にバックアップします。 923 00:39:42,770 --> 00:39:46,550 それでは先に行くと、今シフトしましょう​​、 これまでのアルゴリズムとは異なり、 924 00:39:46,550 --> 00:39:50,910 アーティの余地を作るために 右ここ先頭に。 925 00:39:50,910 --> 00:39:54,690 だから、一日の終わりに、私は一種の私 私が前に避けたいことやって。 926 00:39:54,690 --> 00:39:57,770 だから、私のアルゴリズムでは、ソートされ の、知的に、逆に 927 00:39:57,770 --> 00:39:59,070 それは、もともとあったものから。 928 00:39:59,070 --> 00:40:01,240 私はちょうどシフトをやってる 別のポイントで。 929 00:40:01,240 --> 00:40:02,291 今私は3にいる。 930 00:40:02,291 --> 00:40:02,790 いまいましい、ああ。 931 00:40:02,790 --> 00:40:04,039 私たちは、再び多くの作業を行う必要があります。 932 00:40:04,039 --> 00:40:05,060 それでは、あなたを押し出してみましょう。 933 00:40:05,060 --> 00:40:09,360 OH - ああ4--、6、の8を動かしてみようと 図3は、すぐそこに行くつもりされている。 934 00:40:09,360 --> 00:40:11,490 だから、少なくとも若干の節約今回。 935 00:40:11,490 --> 00:40:13,100 7、あまりにも多くの仕事を行うことができます。 936 00:40:13,100 --> 00:40:15,370 あなたがポップしたいのであれば 背中のはあなたを挿入してみましょう。 937 00:40:15,370 --> 00:40:17,440 そして最後に、5、よろしければ バックポップしたい、私たち 938 00:40:17,440 --> 00:40:22,610 あなたをシフトする必要がある、あなた、 5時までには、所定の位置にある。 939 00:40:22,610 --> 00:40:25,670 >> だから今でこれを見るために グラフィカルにハイレベル、 940 00:40:25,670 --> 00:40:31,080 それでは、このアルゴリズムをやらせる ビジュアつの追加の時間。 941 00:40:31,080 --> 00:40:33,580 だから、これは私たちは挿入​​ソートを呼び出すものとします。 942 00:40:33,580 --> 00:40:37,700 私たちは、同じようにそれを実行しよう 高速で、ここでそれを起動してください。 943 00:40:37,700 --> 00:40:39,580 そして、それは、あまりにも、別の感じを持っています。 944 00:40:39,580 --> 00:40:42,180 これは、一種の良くなってきたと より良いが、それは完璧ということはない 945 00:40:42,180 --> 00:40:44,630 私はで行くと、これらのギャップを滑らかになるまで。 946 00:40:44,630 --> 00:40:47,860 ので、もう一度、私は取っているもの 私は右に左から与えられています。 947 00:40:47,860 --> 00:40:50,350 だから私はそれほど幸運で取得していない そのすべてが完璧だった。 948 00:40:50,350 --> 00:40:54,190 私たちは、これらの小さなを持っていた理由です 私たちは時間をかけて固定mispositions。 949 00:40:54,190 --> 00:40:58,890 >> だから、これらのアルゴリズムのすべてがいるように見える わずかに異なるペースで走行。 950 00:40:58,890 --> 00:41:02,030 実際には、これを使用して、と言うだろう 最高やこれまでの最速? 951 00:41:02,030 --> 00:41:03,450 バブルソート、最初の? 952 00:41:03,450 --> 00:41:05,000 選択ソート、第二? 953 00:41:05,000 --> 00:41:08,450 挿入ソート、第三? 954 00:41:08,450 --> 00:41:10,710 私はいくつかの選択ソートを聞く。 955 00:41:10,710 --> 00:41:13,280 その他の考え? 956 00:41:13,280 --> 00:41:16,880 >> だから、ことが判明 これらのアルゴリズムのすべて 957 00:41:16,880 --> 00:41:22,400 として基本的に同じように効率的である 同じように、逆に、各other--か 958 00:41:22,400 --> 00:41:25,980 、互いに同じ非効率 私たちは基本的に行うことができますので、 959 00:41:25,980 --> 00:41:28,120 すべての3つのよりはまし これらのアルゴリズム。 960 00:41:28,120 --> 00:41:29,990 そして、それはあまりにも、白い嘘のビットです。 961 00:41:29,990 --> 00:41:32,580 私は効率的と言うとき あるいは非効率的として、 962 00:41:32,580 --> 00:41:35,040 それは、少なくとものためだ n個の超大型値。 963 00:41:35,040 --> 00:41:38,450 ここではわずか8人を持っている場合、 画面上または多分50かそこらのバー、 964 00:41:38,450 --> 00:41:41,645 あなたは絶対に違いがわかります これらの3つのアルゴリズムの中で。 965 00:41:41,645 --> 00:41:44,020 しかし、nは、人の数は、 または番号の数、 966 00:41:44,020 --> 00:41:46,350 または電話の人数 ブック、またはWebページの数 967 00:41:46,350 --> 00:41:48,230 Googleのデータベースにある 、どんどん大きくなっ 968 00:41:48,230 --> 00:41:51,650 私たちは、これらの3つのすべてがわかります アルゴリズムは、実際にはかなり劣る。 969 00:41:51,650 --> 00:41:54,060 そして、私たちは基本的に行うことができます それよりも優れています。 970 00:41:54,060 --> 00:41:56,830 >> それでは最後に、見てみましょう、 何これらのアルゴリズムはともかくで 971 00:41:56,830 --> 00:41:59,520 のように聞こえる いくつかの他の状況 972 00:41:59,520 --> 00:42:03,550 同様にこの経由で ここで可視化 973 00:42:03,550 --> 00:42:06,860 それが私たちをご紹介します 多くのアルゴリズム。 974 00:42:06,860 --> 00:42:10,330 それでは先に行くとお祝いしましょう ここに私たちの参加者、その全員 975 00:42:10,330 --> 00:42:11,690 非常によく自分自身を選別した。 976 00:42:11,690 --> 00:42:15,124 あなたが別れの贈り物を考えているなら。 977 00:42:15,124 --> 00:42:16,540 あなたにもあなたの番号を維持することができます。 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 そして、あなたは何が表示されます、 というか、今、聞く 980 00:42:22,520 --> 00:42:25,710 として私たちは音を置くということです これらのバーのそれぞれに 981 00:42:25,710 --> 00:42:28,660 そして、ソフトウェアに関連付けます 音の異なる周波数、 982 00:42:28,660 --> 00:42:33,970 あなたはより多くのaudiolyあなたの心をラップすることができます これらのものの何それぞれの周りに 983 00:42:33,970 --> 00:42:34,470 のように見える。 984 00:42:34,470 --> 00:42:39,325 挿入ソートで最初のもの 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> これはバブルソートです。 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> 選択ソート。 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> マージソートと呼ばれるもの。 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnomeのソート。 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> つまり、CS50はこれで終わりです。 1000 00:44:09,430 --> 00:44:13,360 私たちは、水曜日にお会いします。 1001 00:44:13,360 --> 00:44:16,671 >> ナレーター:そして今、「ディープ 祈るファーナムによる思考」。 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 なぜループのため? 1004 00:44:21,590 --> 00:44:23,200 どうしてそれを改善する? 1005 00:44:23,200 --> 00:44:25,970 私は5ループを作ると思います。 1006 00:44:25,970 --> 00:44:28,720 >> [笑い]