1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [제 3] [이하 편안한] 2 00:00:03,000 --> 00:00:05,000 >> [네이트 Hardison] [하버드 대학] 3 00:00:05,000 --> 00:00:08,000 >> [이 CS50 수 있습니다.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> 좋다, 시작하자. 5 00:00:10,000 --> 00:00:13,000 CS50의 주 4에 오신 것을 환영합니다. 6 00:00:13,000 --> 00:00:19,000 너희가 웹 브라우저를 열고 pset 3 열 경우는, 7 00:00:19,000 --> 00:00:23,000 CS50로 출격, 우리는 갈 시작할 거에요 8 00:00:23,000 --> 00:00:26,000 이 질문의 섹션을 통해. 9 00:00:26,000 --> 00:00:32,000 바로 지난 주처럼, 우리는 CS50 공간에서 일하게 될거야 10 00:00:32,000 --> 00:00:35,000 당신은 또한뿐만 아니라 그 올리 있을지 11 00:00:35,000 --> 00:00:43,000 당신이 가서 내가 상단에 여기에있어 한이 링크를 방문하십시오. 12 00:00:43,000 --> 00:00:45,000 그것은 시작하는 시간이다. 13 00:00:45,000 --> 00:00:51,000 우리는 여기서 우리의 작은 안부 프로그램이 있어요. 미친 아무것도. 14 00:00:51,000 --> 00:00:55,000 오늘 당신들을 어떻게해야할까요 첫 번째 것들 중 하나는 몇 가지 솔루션을 통해 시작한다 15 00:00:55,000 --> 00:00:58,000 문제 세트 1 예를 들어, 솔루션의 종류에 16 00:00:58,000 --> 00:01:03,000 그냥 당신이 코드 직원의 종류 쓰는 일에 대한 느낌을 얻을 수 17 00:01:03,000 --> 00:01:07,000 코드 다른 학생들 종류의 쓰기 무엇, 18 00:01:07,000 --> 00:01:10,000 난 그게 이상하다는 건 알지 때문이 당신이 살펴 19 00:01:10,000 --> 00:01:14,000 당신은 문제 집합에 솔루션을 제출하고 의견을 때 20 00:01:14,000 --> 00:01:18,000 자신의 버전을하지만, 가끔 다른 사람들이 알아 냈어하는 것이 좋습니다 21 00:01:18,000 --> 00:01:22,000 특히 멋진 아르들이보고. 22 00:01:22,000 --> 00:01:27,000 대부분의 경우, 내가 정말 너희들이 생산하는 솔루션 깊은 감명을 받았습니다. 23 00:01:27,000 --> 00:01:31,000 전 아직 문제 세트 거 고요를보고 시작하지 않은,하지만 그들은 처음 그런 건 경우 24 00:01:31,000 --> 00:01:34,000 그것은 아무것도하지만 좋은 일을 의미합니다. 25 00:01:34,000 --> 00:01:40,000 >> 내 개정을 보면, 어디, 일 월요일 수정 1에서 모든 길을 시작하게 26 00:01:40,000 --> 00:01:47,000 우리는 마리오 솔루션에 대해 간략히 살펴거야. 27 00:01:47,000 --> 00:01:54,000 당신이이 일을하면, 우리는 제시 할 것 같군 이러한 프로그램이 정확합니다. 28 00:01:54,000 --> 00:01:56,000 , 거기에 문제가있는 정확성의 문제가 아니었다 아니라 29 00:01:56,000 --> 00:01:59,000 우리는 다른 디자인 문제에 대해 조금 얘기하고 싶어요 30 00:01:59,000 --> 00:02:03,000 그 여기에 사용되었다. 31 00:02:03,000 --> 00:02:08,000 솔루션에 대한 흥미 로웠 것들 중 하나 32 00:02:08,000 --> 00:02:11,000 이 파운드 정의라는이 새로운 구조를 사용하는 것입니다, 33 00:02:11,000 --> 00:02:15,000 때때로 또한 해시 정의라고. 34 00:02:15,000 --> 00:02:18,000 내가 여기에 확대 봅시다. 35 00:02:18,000 --> 00:02:24,000 # 정의는 프로그램에서 이러한 숫자에 이름을 부여 할 수 있습니다. 36 00:02:24,000 --> 00:02:28,000 마리오의 피라미드의 경우, 최대 높이 37 00:02:28,000 --> 00:02:34,000 23보다는 내에서 23 댔 코드 38 00:02:34,000 --> 00:02:37,000 우리는 하드 코딩 23로 그를 참조거야 - 39 00:02:37,000 --> 00:02:43,000 대신이 그 번호로 이름 MAX_HEIGHT을 제공합니다 40 00:02:43,000 --> 00:02:48,000 그래서 여기 내 DO-동안 루프에서 해당 41 00:02:48,000 --> 00:02:51,000 당신은 실제로 MAX_HEIGHT을 참조 할 수 있습니다 42 00:02:51,000 --> 00:02:55,000 대신 23 번을 생각할 때 43 00:02:55,000 --> 00:02:57,000 [학생] 그렇게 할 수있는 이점이 무엇입니까? 44 00:02:57,000 --> 00:02:59,000 그건 좋은 질문이야. 45 00:02:59,000 --> 00:03:03,000 하나는 가독성이다. 46 00:03:03,000 --> 00:03:08,000 이 # 정의를 사용의 장점은 가독성이다. 47 00:03:08,000 --> 00:03:11,000 내가이 코드를 읽고있을 때, 나는 무슨 일이 일어나고 있는지 볼 수 있습니다. 48 00:03:11,000 --> 00:03:15,000 >> 나는 우리가 테스트하고있는 것으로이 조건에서 볼 수 있습니다 49 00:03:15,000 --> 00:03:19,000 높이 우리는 또한 정의 수 <0, 존재 50 00:03:19,000 --> 00:03:22,000 최소 높이 또는 분 높이 여야합니다. 51 00:03:22,000 --> 00:03:25,000 다른 장점은 그때 볼 줄의 나머지 부분을 읽을 수 있다는 것입니다 52 00:03:25,000 --> 00:03:30,000 우리는 또한, 높이가 최대 높이보다 큰 아니라는 것을 확인하기 위해 확인한다는 53 00:03:30,000 --> 00:03:35,000 우리는 높이가 최대 높이보다 큰 동안 계속해서 때문입니다. 54 00:03:35,000 --> 00:03:40,000 다른 장점은 - 내가 조금 축소 - 여기 55 00:03:40,000 --> 00:03:49,000 이 프로그램을 실행하고, 지금 23와 함께 말을 실행하는 경우 56 00:03:49,000 --> 00:03:52,000 그냥 그렇게 모든 23 행을 출력합니다. 57 00:03:52,000 --> 00:03:54,000 그러나, 나는 최대 높이를 변경하고 싶어 말 58 00:03:54,000 --> 00:03:57,000 지금은 피라미드의 최대 높이를 제한하려는 59 00:03:57,000 --> 00:04:06,000 펑키했다 만 말하는 사람이 될 수 있습니다. 60 00:04:06,000 --> 00:04:14,000 # 포함 , # MAX_HEIGHT을 정의 61 00:04:14,000 --> 00:04:18,000 오고 우리가 10 동등을 설정하는 원한다고. 62 00:04:18,000 --> 00:04:22,000 지금이 시점에서 내가했던 모든이 한 위치에서 변경했습니다. 63 00:04:22,000 --> 00:04:27,000 나는 12 시도하고 입력하면 난 지금 코드를 다시 컴파일하고, 수 64 00:04:27,000 --> 00:04:30,000 나 다시하라는 메시지가 표시됩니다. 65 00:04:30,000 --> 00:04:33,000 이 경우, 우리는 한 번만 MAX_HEIGHT를 사용하고 있습니다. 66 00:04:33,000 --> 00:04:37,000 그것은에 갈 번거 로움 큰 일 아니야 67 00:04:37,000 --> 00:04:40,000 필요한 경우와 동안 루프에서 변경합니다. 68 00:04:40,000 --> 00:04:44,000 하지만 당신이 동일한 마법 번호를 참조하는 프로그램 69 00:04:44,000 --> 00:04:47,000 반복해서,이 # 메커니즘을 정의하는 것은 정말 편리합니다 70 00:04:47,000 --> 00:04:52,000 당신은의 파일 - 당신이 넣는 일반적됐다고을 상단에서 한 시간을 변경할 수 있기 때문에 71 00:04:52,000 --> 00:04:57,000 그리고 변화는 파일의 나머지 부분을 통해 percolates. 72 00:04:57,000 --> 00:05:02,000 >> 내가 생각하는 본 과제에 유의하고 싶어 다른 것들, 정말 좋은 보았다 73 00:05:02,000 --> 00:05:05,000 하나는 변수의 명명했다. 74 00:05:05,000 --> 00:05:14,000 당신은 우리가 행과 높이 소위라는 정수 변수를 가지고 한 여기를 참조하십시오. 75 00:05:14,000 --> 00:05:20,000 공백 해시는, 코드가 좀 더 읽을 수 있도록하는 데 도움이 76 00:05:20,000 --> 00:05:25,000 조금 더 이해하기 것을 실제로 무슨 일 수 있습니다. 77 00:05:25,000 --> 00:05:31,000 이 사용하는 반면에, 무작위 편지를 말 78 00:05:31,000 --> 00:05:35,000 모두 또는 듣기 힘든 얘기 라. 79 00:05:35,000 --> 00:05:39,000 제가 지적합니다 마지막으로 한가지는 for 루프에 해당합니다 80 00:05:39,000 --> 00:05:45,000 자주 반복자 변수, 당신은 루프에 대해에서 사용하는 이러한 카운터, 81 00:05:45,000 --> 00:05:51,000 그 후 K 표준과 내가하고 J 중과를 시작하는 기존 및이에요 82 00:05:51,000 --> 00:05:54,000 당신이 더 많은 변수가 필요하면 거기에서 무슨 일, 83 00:05:54,000 --> 00:05:56,000 이 단지 컨벤션 있습니다. 84 00:05:56,000 --> 00:05:58,000 컨벤션 많이 있습니다. 85 00:05:58,000 --> 00:06:00,000 당신이 사용하고있는 프로그래밍 언어에 따라 달라집니다. 86 00:06:00,000 --> 00:06:04,000 그러나 C에서, 우리는 일반적으로 전을 시작합니다. 87 00:06:04,000 --> 00:06:08,000 이 말은, 사용하는 이해가되지 않는 A 또는 B 88 00:06:08,000 --> 00:06:13,000 상황에 따라 다릅니다. 89 00:06:13,000 --> 00:06:15,000 이 하나는 기록이다. 90 00:06:15,000 --> 00:06:25,000 지금 일 월요일 수정이를 끌어 경우, 당신은 또 다른 마리오를 볼 수 있습니다 91 00:06:25,000 --> 00:06:29,000 이 하나는 우리가 본 다른 하나와 유사한 92 00:06:29,000 --> 00:06:32,000 하지만 멋진 무언가 종류를 않습니다. 93 00:06:32,000 --> 00:06:38,000 우리가 루프의 내부에서 바로 여기이 부분을 보면 94 00:06:38,000 --> 00:06:44,000 그들은 바로이 라인에 여기 어떤 미친 찾는 구문을 사용하고 있습니다. 95 00:06:44,000 --> 00:06:47,000 이것은 3 원 연산자라고합니다. 96 00:06:47,000 --> 00:06:53,000 그것은 한 줄에 응축 경우 다른 문입니다. 97 00:06:53,000 --> 00:06:57,000 조건은 괄호 안에이 부분입니다. 98 00:06:57,000 --> 00:07:05,000 이 말에 것과 J <높이된다면 ... - 난 - 1. 99 00:07:05,000 --> 00:07:10,000 그리고 그 내용 블록이 될 경우는 공간이 무엇입니까 100 00:07:10,000 --> 00:07:16,000 다음 다른이 될 일의 내용이 #입니다. 101 00:07:16,000 --> 00:07:20,000 그것은 본질적으로이 변수에 공간을 할당있어. 102 00:07:20,000 --> 00:07:24,000 그것은 블록 변수의 내용에 공백을 태우고 103 00:07:24,000 --> 00:07:29,000 이 조건이 충족되는 경우, 상태가 충족되지 않은 경우는, 104 00:07:29,000 --> 00:07:32,000 다음 블록 변수는 #이를 얻을 수 있습니다. 105 00:07:32,000 --> 00:07:37,000 그리고, 물론, 대신 전체 문자열을 구축 106 00:07:37,000 --> 00:07:43,000 그리고 마지막에 모든 출력이 솔루션은 한 번에 한 문자를 출력합니다. 107 00:07:43,000 --> 00:07:48,000 정말 멋진. 108 00:07:48,000 --> 00:07:53,000 >> 볼 수있는 일의 또 다른 커플. 우리는 욕심으로 이동합니다. 109 00:07:53,000 --> 00:07:58,000 우리가 욕심 보면 지금이 아니면,이 첫 번째 솔루션 110 00:07:58,000 --> 00:08:00,000 # 꽤 정의 다음을 사용합니다. 111 00:08:00,000 --> 00:08:06,000 우리는이 프로그램의 서로 다른 숫자의 각각에 대해 정의 된 한 상수를있어. 112 00:08:06,000 --> 00:08:12,000 우리는 달러 당 센트 한, 분기, 천, 5 센트, 그리고 동전 한이 있고 113 00:08:12,000 --> 00:08:15,000 지금 우리는 아래로 스크롤 코드를 읽으면 114 00:08:15,000 --> 00:08:22,000 우리는 표준 일 - 동안 루프 인쇄 모든것을 볼 수 있습니다. 115 00:08:22,000 --> 00:08:25,000 이 문제의 요점의 종류가 실현 된 그 116 00:08:25,000 --> 00:08:29,000 당신은 정수로는 사용자에서 읽을 수있는 수레를 변환하는 데 필요한 117 00:08:29,000 --> 00:08:32,000 정확하게 계산을 수행,이 그 이유 일입니다 118 00:08:32,000 --> 00:08:36,000 부동 소수점 숫자로, 우리는 간단하게 강의에 대한 이야기​​와 같은, 119 00:08:36,000 --> 00:08:41,000 정확하게 숫자 라인에있는 모든 단일 값을 표현하기 위해 수 없습니다 120 00:08:41,000 --> 00:08:47,000 무한 여러 값도 3.1 세 사이의 말은이 때문입니다. 121 00:08:47,000 --> 00:08:54,000 당신은 3.01와 3.001과 3.0001을 가질 수, 당신은 계속 할 수 있습니다. 122 00:08:54,000 --> 00:09:00,000 당신이 돈을 작업 할 때마다 그것은 밝혀, 당신은 자주 변환 할 123 00:09:00,000 --> 00:09:05,000 정수 형식으로 있도록 동전과 물건의 종류를 잃는 게 아니야. 124 00:09:05,000 --> 00:09:09,000 그와 라운딩을하는 것이 핵심이었다. 125 00:09:09,000 --> 00:09:14,000 이 솔루션은 완벽하게 간단 훌륭한 알고리즘을 사용 126 00:09:14,000 --> 00:09:17,000 이는 먼저 분기하여 남은 센트의 수를 감소 127 00:09:17,000 --> 00:09:19,000 그런 다음 천으로 다음 센트면, 그럼 페니로, 128 00:09:19,000 --> 00:09:24,000 그리고 동전마다의 수에 추가. 129 00:09:24,000 --> 00:09:31,000 >> 제가 축소 및 개정 4로 이동 한 우리가 볼 수있는 또 다른 방법, 130 00:09:31,000 --> 00:09:40,000 매우 비슷 시작하지만, 대신 사용 사업부와 모드를 가지고 131 00:09:40,000 --> 00:09:44,000 여기에 센트의 수를 계산합니다. 132 00:09:44,000 --> 00:09:50,000 이것은 분기의 수는 25으로 나눈 센트의 수와 동일합니다 133 00:09:50,000 --> 00:09:53,000 우리가 정수 나누기를하고 있기 때문에이 작동 이유는, 134 00:09:53,000 --> 00:09:58,000 그래서 폐기 된 나머지입니다. 135 00:09:58,000 --> 00:10:02,000 [학생] 우리는 검색을 언급해야하나요? 136 00:10:02,000 --> 00:10:05,000 정말 따라 달라집니다. 137 00:10:05,000 --> 00:10:08,000 [학생] 당신은 여기에 코드보다 더 많은 주석하고 있습니다. 138 00:10:08,000 --> 00:10:16,000 네, 그래서이 문제에 철학을 변화의 무리가 있습니다. 139 00:10:16,000 --> 00:10:21,000 내 개인 철학은, 코드가 정말 사실 때문입니다 140 00:10:21,000 --> 00:10:24,000 코드처럼 실제로 컴퓨터에서 실행 할 수있어 141 00:10:24,000 --> 00:10:29,000 그래서 코드는 많은 주석으로 필요로하지 않도록 최대한 읽을 수 있어야합니다. 142 00:10:29,000 --> 00:10:33,000 그 말은 당신이 수학적으로 까다로운의 종류 일을 할 때, 말 143 00:10:33,000 --> 00:10:38,000 또는 알고리즘, 그것은 그 당신이 할 수 있도록하여 댓글을 잘 144 00:10:38,000 --> 00:10:43,000 코드를 읽고 사람에게 여분의 차원, 여분의 레이어를 추가합니다. 145 00:10:43,000 --> 00:10:49,000 이러한 해결책에서, 종종 더 많이 왜냐하면 댓글을 달았 아르 146 00:10:49,000 --> 00:10:52,000 우리는 그들을 배포 할 수 있도록하려는 사람들이 애들을 데리러 수 있습니다 147 00:10:52,000 --> 00:10:56,000 그리고 아주 쉽게 읽어보십시오. 148 00:10:56,000 --> 00:11:05,000 그러나 확실히,이 무거운 것을 동의 할 것이다. 149 00:11:05,000 --> 00:11:07,000 [학생]하지만 의심, 무거운 갈 때? 150 00:11:07,000 --> 00:11:10,000 의심, 무거운 이동합니다. 151 00:11:10,000 --> 00:11:17,000 어떤 사람들은 가끔 그런 식으로 반환 0 또는 말을합니다. 152 00:11:17,000 --> 00:11:20,000 나는 말도 안되는 코멘트 그게 생각합니다. 153 00:11:20,000 --> 00:11:22,000 분명 그건 일어나고있는 일이지. 154 00:11:22,000 --> 00:11:25,000 나는 나 한테 말 영어 필요가 없습니다. 155 00:11:25,000 --> 00:11:28,000 때때로 사람들은 같은 걸 쓸 것 "kthxbai을!" 156 00:11:28,000 --> 00:11:32,000 그래서 귀엽기뿐만 아니라하지 - 157 00:11:32,000 --> 00:11:35,000 그 댓글을 점 여부의 차이를 만들수 없어. 158 00:11:35,000 --> 00:11:41,000 그 가지 의견은 하, 하입니다. 159 00:11:41,000 --> 00:11:43,000 좋아. 160 00:11:43,000 --> 00:11:48,000 >> 이 시점에서, 질문 3 섹션을 설정 문제에 대한 작업을 시작하자. 161 00:11:48,000 --> 00:11:52,000 너희들은 다시이 일을하면, 162 00:11:52,000 --> 00:11:55,000 지난 주와 마찬가지로, 우리는이 섹션의 반바지를 볼 수 없어요. 163 00:11:55,000 --> 00:12:00,000 우리는 당신들이 자신의 시간에 그 일을하게 놔두지하고 질문에 대해 얘기하자. 164 00:12:00,000 --> 00:12:05,000 그러나 지금은이 섹션에서 우리는 더 많은 시간을 보내고거야 165 00:12:05,000 --> 00:12:11,000 코딩 기본 덜 얘기를 166 00:12:11,000 --> 00:12:15,000 우리가 지난 주에했던 것처럼, 대신, 우리는 더 많은 초점을거야 167 00:12:15,000 --> 00:12:22,000 이론의 조금 더, 그래서 이진 검색에 대해 얘기하고 분류. 168 00:12:22,000 --> 00:12:27,000 강의와 함께 다음과 같은 한 분들부터, 169 00:12:27,000 --> 00:12:30,000 누가 나 한테 그 차이가 무엇의 뉴스 레터를 살펴을 제공 할 수 170 00:12:30,000 --> 00:12:35,000 이진 검색 및 선형 검색 사이? 171 00:12:35,000 --> 00:12:37,000 무슨 일이야? 그래. 172 00:12:37,000 --> 00:12:42,000 정렬 목록에서 모든 요소를​​ 통해 선형 검색 검색 173 00:12:42,000 --> 00:12:45,000 하나 하나 하나 하나 하나, 174 00:12:45,000 --> 00:12:50,000 및 이진 검색은, 2 그룹으로 목록을 분리 175 00:12:50,000 --> 00:12:57,000 당신이 검색하고 키 값이 경우 수표는 중간 값보다보다 크거나 작 176 00:12:57,000 --> 00:13:00,000 당신은 발견하고보다면, 그것은 아래 목록을 가서 177 00:13:00,000 --> 00:13:03,000 그리고 다시 분할 같은 기능을 수행 178 00:13:03,000 --> 00:13:07,000 모든 길 아래로는 값 자체에 같도록 중간 지점을 발견 할 때까지. 179 00:13:07,000 --> 00:13:10,000 맞아. 180 00:13:10,000 --> 00:13:12,000 >> 우리가 왜 상관이야? 181 00:13:12,000 --> 00:13:20,000 왜 우리는 선형 검색 대 이진 검색에 대해 이야기합니까? 182 00:13:20,000 --> 00:13:22,000 그래. 183 00:13:22,000 --> 00:13:24,000 당신은 문제의 크기를 두 배로 만약 그렇다면 이진은 훨씬 빨리입니다 184 00:13:24,000 --> 00:13:27,000 그것은 오히려 두 배 많은보다 한 걸음 만 더 걸립니다. 185 00:13:27,000 --> 00:13:29,000 그렇지. 186 00:13:29,000 --> 00:13:31,000 좋은 해답이 있습니다. 187 00:13:31,000 --> 00:13:36,000 선형 검색을 많이 한 번에 하나의 요소를 확인합니다 188 00:13:36,000 --> 00:13:39,000 우리는 강의의 가장 첫날에 본으로 189 00:13:39,000 --> 00:13:42,000 데이비드는 자신의 전화 번호부 예를 통해 들어갔을 때 190 00:13:42,000 --> 00:13:45,000 한 번에 전화 책의 한 페이지를 찢어 지죠 191 00:13:45,000 --> 00:13:47,000 그리고, 다시 이상 이상 이상 그 일을 계속 192 00:13:47,000 --> 00:13:51,000 그것은 그에게 전화 번호부에있는 사람을 찾을 수 정말 시간이 오래 걸릴 거예요 193 00:13:51,000 --> 00:13:55,000 물론,하지 않는 한, 그는 알파벳의 처음에 사람을 찾고있었습니다. 194 00:13:55,000 --> 00:14:00,000 이진 검색을 통해, 당신은 훨씬 빨리 갈 수 195 00:14:00,000 --> 00:14:05,000 그리고 두 번 빠르게 또는 3 배 빠르게 또는 4 배 빠른 속도로만큼 없습니다. 196 00:14:05,000 --> 00:14:13,000 그러나 문제는 작아 빠르고 훨씬 작은옵니다. 197 00:14:13,000 --> 00:14:17,000 이 설명하기 위해, 우리는 무슨 일이 벌어지고 있는지에 대해 얘기 시작합니다 198 00:14:17,000 --> 00:14:21,000 우리는 이진 검색을 쓸 때. 199 00:14:21,000 --> 00:14:27,000 손에 문제는 내가 숫자의 배열이있는 경우 200 00:14:27,000 --> 00:14:40,000 , 1, 2, 3, 5, 7, 23, 45, 78, 12,323을 말 201 00:14:40,000 --> 00:14:47,000 그 후 0s의 장자 후 9 202 00:14:47,000 --> 00:14:52,000 대신 우리는 무엇 정말 빠르게 파악 할 수 있도록 할 203 00:14:52,000 --> 00:14:57,000 숫자의 배열입니다. 204 00:14:57,000 --> 00:15:00,000 나는이 약간 바보와 약간의 인위적인 보인다는 거 알아요 205 00:15:00,000 --> 00:15:02,000 지금이 때문입니다. 206 00:15:02,000 --> 00:15:05,000 우리는 거기에 매우 많은 요소가없는 배열을 가지고 207 00:15:05,000 --> 00:15:08,000 그리고 당신이 중 하나를 묻는다면 파악할지 여부를 208 00:15:08,000 --> 00:15:11,000 23 배열에, 당신이 너무 빨리 할 수 209 00:15:11,000 --> 00:15:16,000 그냥이에서이기는 및 예 또는 아니오 말하지로. 210 00:15:16,000 --> 00:15:20,000 이라면 고려해야 할 아날로그는 말 상상된다 211 00:15:20,000 --> 00:15:27,000 10,000 행 20,000 행이있는 Excel 스프레드 시트. 212 00:15:27,000 --> 00:15:31,000 물론, 당신은 명령 F 또는 제어 F을 수행하고 무언가를 찾아 볼 수 있습니다. 213 00:15:31,000 --> 00:15:33,000 당신은 또한, 필터 및 검색 물건을 사용할 수 있습니다 214 00:15:33,000 --> 00:15:37,000 하지만 선으로 선으로 해당 파일 라인을 통해 볼한다면, 215 00:15:37,000 --> 00:15:40,000 그것은을 찾아 당신에게 시간이 오래 걸릴 것입니다. 216 00:15:40,000 --> 00:15:42,000 곳도 전화 번호부 예에서처럼 가지입니다 217 00:15:42,000 --> 00:15:44,000 아무도는 한 번에 전화 번호부하다 페이지를 통해 보이는 없습니다. 218 00:15:44,000 --> 00:15:47,000 일반적으로, 그들은 중간에 열어 요 219 00:15:47,000 --> 00:15:50,000 또는 전화 책과 사전 곳의 많은의 경우 220 00:15:50,000 --> 00:15:54,000 당신은 실제로는 첫 글자에 조율 한 221 00:15:54,000 --> 00:16:01,000 그 첫 글자로 이동하다가 열이 겪고 시작합니다. 222 00:16:01,000 --> 00:16:03,000 >> 이름을 다시 생각 나게 해요. >> 샘 있습니다. 223 00:16:03,000 --> 00:16:05,000 샘. 224 00:16:05,000 --> 00:16:11,000 샘 말처럼, 그 선형 검색 과정은 정말 늦어 질 전망입니다 225 00:16:11,000 --> 00:16:15,000 대신 이진 검색과 함께,이 작품 방법입니다 226 00:16:15,000 --> 00:16:21,000 우리가 우리의 검색 알고리즘의 반복을 통해 갈 때마다, 227 00:16:21,000 --> 00:16:27,000 우리는 본질적으로 반으로 목록을 나눌 것이다 228 00:16:27,000 --> 00:16:33,000 두 개의 작은 목록에. 229 00:16:33,000 --> 00:16:39,000 그리고 루프의 다음 반복에, 우리는 다시 나누어됩니다 230 00:16:39,000 --> 00:16:44,000 다른 작은 목록에. 231 00:16:44,000 --> 00:16:48,000 당신이 볼 수 있듯이, 문제는 점점 작아지고 있으며 작은 계속 232 00:16:48,000 --> 00:16:55,000 우리는 매번 목록의 폐기 절반을 유지 때문입니다. 233 00:16:55,000 --> 00:16:59,000 이 방법 폐기 작동합니까? 234 00:16:59,000 --> 00:17:05,000 우리가 컴퓨터라면 그냥 거듭 말씀 드리지만, 우리는 할 수있는 것 235 00:17:05,000 --> 00:17:11,000 우리는이 목록에서 5 번 검색, 말 한 236 00:17:11,000 --> 00:17:15,000 우리가 중간에 번호를 선택할 것입니다. 237 00:17:15,000 --> 00:17:26,000 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 숫자가 있기 때문에이 목록 중간에 238 00:17:26,000 --> 00:17:32,000 우리는 4 위치 또는 5 위치에 하나의 수를 선택 할 239 00:17:32,000 --> 00:17:38,000 우리는 목록의 중간에 전화 해. 240 00:17:38,000 --> 00:17:42,000 중간에 번호를 선택합니다. 241 00:17:42,000 --> 00:17:51,000 샘 말처럼 그 번호가 동일하면, 우리는 볼 수 테스트합니다 242 00:17:51,000 --> 00:17:59,000 우리가 얻을하고자하는 번호 또는 원하는 수 있습니다. 243 00:17:59,000 --> 00:18:06,000 이 같은이라면, 우리가 찾았습니다. 우리는 이겼다. 244 00:18:06,000 --> 00:18:12,000 그 같지 않음이라면, 케이스의 몇 있습니다. 245 00:18:12,000 --> 00:18:15,000 두 경우는, 어느 숫자는 우리가보고있는 수보다 더 큰 수 있다고 아르 246 00:18:15,000 --> 00:18:19,000 아니면 미만입니다. 247 00:18:19,000 --> 00:18:25,000 가 더 있다면, 우리는 오른쪽으로 이동합니다. 248 00:18:25,000 --> 00:18:33,000 덜 있다면, 우리는 왼쪽으로 이동합니다. 249 00:18:33,000 --> 00:18:41,000 그리고 우리는 다시 전체 과정을 반복 250 00:18:41,000 --> 00:18:48,000 오른쪽 절반하거나 목록의 왼쪽 이분의 일 중 하나에. 251 00:18:48,000 --> 00:18:51,000 >> 오늘의 섹션의 첫 번째 문제는 알아 내기 위해서입니다 252 00:18:51,000 --> 00:18:55,000 어떻게 우리가 실제로 C 코드에서이 표현을 시작할 수 있습니다. 253 00:18:55,000 --> 00:18:58,000 여기 의사있어. 254 00:18:58,000 --> 00:19:04,000 그게 우리가 일을 시작합니다 내가는 새로운 공간을 찾아 볼게요 255 00:19:04,000 --> 00:19:09,000 우리가 저장이 노트를 가지고 있도록,이 버전을 저장 256 00:19:09,000 --> 00:19:20,000 우리는이 모든을 삭제 한 다음 복사하여 문제 세트에서 붙여 넣기합니다 257 00:19:20,000 --> 00:19:26,000 우리의 공간에이 정보, 그리고 희망이 침입하지 않습니다. 258 00:19:26,000 --> 00:19:28,000 좋아요. 259 00:19:28,000 --> 00:19:33,000 당신 부하들이 그렇게한다면, 당신의 새로운 공간에이 코드를 복사하여 붙여 넣기 260 00:19:33,000 --> 00:19:43,000 빈 하나에. 261 00:19:43,000 --> 00:19:47,000 가 다니엘을 시도해 보자. 이 프로그램을 컴파일하고 실행하면 작동합니까? 262 00:19:47,000 --> 00:19:49,000 번호 >>은 무슨 말을하는 거예요? 263 00:19:49,000 --> 00:19:53,000 이 컨트롤이 아닌 무효 함수의 끝 부분에 도달 말합니다. 264 00:19:53,000 --> 00:19:55,000 그래, 내가 그것을 실행 해 보자. 265 00:19:55,000 --> 00:19:59,000 당신들은 전에 본 적있어? 이 무슨 뜻인지 알고 계십니까? 266 00:19:59,000 --> 00:20:01,000 좋아,이 조금 해부 보자. 267 00:20:01,000 --> 00:20:10,000 당신이 말한 것처럼, 열 1 우리가 오류를 가지고 9 호선에 file.c에서 말하는거야 268 00:20:10,000 --> 00:20:16,000 그리고는 오류 경고 및 반환 형식이 경고에서 형태소 분석 있다고 말한다. 269 00:20:16,000 --> 00:20:18,000 뭔가 말이 반환 유형,에게 무슨 일이있는 것 같습니다. 270 00:20:18,000 --> 00:20:21,000 우리는 비 무효 기능이 있고, 어떤 우리가 기능이있어 의미 271 00:20:21,000 --> 00:20:24,000 그 빈 공간을 반환하지 않습니다. 272 00:20:24,000 --> 00:20:27,000 무효 기능은 다음과 같습니다 그 하나입니다 : 273 00:20:27,000 --> 00:20:35,000 무효 foo ()가, 그리고 반환 타입이 무효이기 때문에이 무효입니다, 274 00:20:35,000 --> 00:20:38,000 그 말은 우리가 여기에 뭔가가 있다면 275 00:20:38,000 --> 00:20:45,000 반환 한 것처럼, 우리는이에 대한 컴파일러 오류 겠어요. 276 00:20:45,000 --> 00:20:49,000 그러나, 우리는 비 무효 기능을 갖추고 있습니다. 277 00:20:49,000 --> 00:20:51,000 이 경우 비 무효 기능은 검색 기능입니다 278 00:20:51,000 --> 00:20:56,000 이 BOOL의 반환 형식이 때문입니다. 279 00:20:56,000 --> 00:20:59,000 이 컨트롤이 아닌 무효 함수의 끝에 도달한다는거야 때, 280 00:20:59,000 --> 00:21:02,000 검색 return 문이없는 때문입니다. 281 00:21:02,000 --> 00:21:04,000 이 유형 BOOL 물건을 반환 없어. 282 00:21:04,000 --> 00:21:09,000 >> 우리는 그 문제를 해결할 수 있으며, 당신들은 어떻게 생각 하나 283 00:21:09,000 --> 00:21:13,000 검색은 기본적으로 반환해야합니까? 284 00:21:13,000 --> 00:21:16,000 어떻게 검색의 기본 반환 값이어야합니다? 285 00:21:16,000 --> 00:21:19,000 우리가 마지막에 넣을 수 일이지. 286 00:21:19,000 --> 00:21:21,000 샬롯, 당신은이 않는 -? 287 00:21:21,000 --> 00:21:23,000 참 또는 거짓? >> 참이거나 거짓입니다. 288 00:21:23,000 --> 00:21:26,000 어떤 사람? 289 00:21:26,000 --> 00:21:28,000 false를 반환합니다. 모르겠어요. 290 00:21:28,000 --> 00:21:30,000 거짓? 한번 해보자. 291 00:21:30,000 --> 00:21:32,000 왜 반환 거짓 말을하는거야? 그거 좋은 직관입니다. 292 00:21:32,000 --> 00:21:35,000 [샬롯] 난 몰라요. 293 00:21:35,000 --> 00:21:39,000 이것이 우리의 기본이 될 것이기 때문에 우리는이 경우에 false를 반환하는 것 294 00:21:39,000 --> 00:21:44,000 어떤 이유로 목록이 비어 있거나 바늘 인 경우 295 00:21:44,000 --> 00:21:46,000 우리는 존재하지 않는 찾고. 296 00:21:46,000 --> 00:21:50,000 그런 다음 맨 끝에서 경우 ​​우리는이 함수에서 사실 이전에 반환하지 않는 297 00:21:50,000 --> 00:21:55,000 우리는 항상이 함수가 아니, 그 배열에없는 말 것 알아요. 298 00:21:55,000 --> 00:21:58,000 이 건초 더미에 없습니다. 299 00:21:58,000 --> 00:22:03,000 우리가 컴파일하고 실행하면 이제 우리가 살펴볼 수 있도록 저를 저장하고, 그것을이 - 보자. 300 00:22:03,000 --> 00:22:08,000 우리가 컴파일하고 프로그램을 실행하면 이제 구축합니다. 301 00:22:08,000 --> 00:22:12,000 우리는 우리의 작은 프롬프트를. 302 00:22:12,000 --> 00:22:20,000 제가 충돌하는 경우 4 - 어 - 어. 303 00:22:20,000 --> 00:22:25,000 아무 인쇄 없습니다. 만사가 잘 끝난 것 같습니다. 304 00:22:25,000 --> 00:22:35,000 우리는 이것을 작성해야 해 305 00:22:35,000 --> 00:22:39,000 우리는 조금 전에 의사의 알고리즘에 대해 얘기. 306 00:22:39,000 --> 00:22:44,000 어디 보자,이 저장 307 00:22:44,000 --> 00:22:49,000 나는 다시 그 알고리즘을 당겨 버릴거야. 308 00:22:49,000 --> 00:22:51,000 의이 사람을 밟아 요. 아뇨. 309 00:22:51,000 --> 00:22:58,000 저기입니다. 310 00:22:58,000 --> 00:23:03,000 우리가 어떻게이 작업을 수행합니까? 311 00:23:03,000 --> 00:23:11,000 어떻게이 코드를 시작하기위한 좋은 전략이 될까요? 312 00:23:11,000 --> 00:23:16,000 당신은 한 가운데에있는 숫자를 선택해야합니다. 313 00:23:16,000 --> 00:23:23,000 우리가 어떻게 배열의 중간에 번호를 선택해야합니까? 314 00:23:23,000 --> 00:23:25,000 방법은? 315 00:23:25,000 --> 00:23:27,000 2로 나누어 [학생] 나 strlen. 316 00:23:27,000 --> 00:23:32,000 나 strlen 2로 나눈 값입니다. 그건 잘 아는 사람입니다. 317 00:23:32,000 --> 00:23:35,000 배열의 특별한 종류 나 strlen 작동합니다. 318 00:23:35,000 --> 00:23:38,000 배열의 어떤 종류가? 319 00:23:38,000 --> 00:23:44,000 문자열 배열, 문자 배열. 320 00:23:44,000 --> 00:23:48,000 그것은 우리가 적용 할 개념의 동일한 종류의입니다 321 00:23:48,000 --> 00:23:52,000 우리가 문자의 배열이 없기 때문에 우리는 나 strlen을 사용할 수 없습니다. 322 00:23:52,000 --> 00:23:55,000 우리는 ints의 배열을 갖추고 있습니다. 323 00:23:55,000 --> 00:23:58,000 그러나 나 strlen 우리를 위해 무엇을합니까? 324 00:23:58,000 --> 00:24:01,000 당신은 우리에게 도착하는지 알아? 325 00:24:01,000 --> 00:24:03,000 [학생] 나 strlen은 우리에게 길이를 얻을 수 있습니다. 326 00:24:03,000 --> 00:24:05,000 그건 정확히 우리에게 길이를 얻을 수 있습니다. 327 00:24:05,000 --> 00:24:09,000 나 strlen 우리를 위해 배열의 길이를 얻을 수 있습니다. 328 00:24:09,000 --> 00:24:14,000 >> 어떻게 우리는 우리의 이진 검색 프로그램에 해당하려면 어떻게해야합니까? 329 00:24:14,000 --> 00:24:18,000 어떻게 배열의 길이를 얻었 을까? 330 00:24:18,000 --> 00:24:20,000 [학생] 나 strlen? 331 00:24:20,000 --> 00:24:25,000 당신은 나 strlen과 적절한 형식이 C 문자열 배열의 길이를 얻을 수 있습니다. 332 00:24:25,000 --> 00:24:31,000 문제는,하지만 우리는 문자열 배열을 가지고 있지 않다는 것입니다. 333 00:24:31,000 --> 00:24:36,000 우리가이 코드를 다시 확인하면, 우리는이 정수 배열을 갖추고 있습니다. 334 00:24:36,000 --> 00:24:38,000 어떻게 우리는 얼마나 오래 알 수 있습니까? 335 00:24:38,000 --> 00:24:44,000 [학생]가 INT 리터 나 뭐 같은 엔드 포인트에 대한 동등한 하나입니까? 336 00:24:44,000 --> 00:24:49,000 실제로 없다 아웃이 변 등 방법으로, 이쪽은 337 00:24:49,000 --> 00:24:52,000 C에 대해 알고 그냥 좋은 것들 중 하나 338 00:24:52,000 --> 00:24:57,000 배열의 길이를 얻을 수있는 방법은 없다는 것을 339 00:24:57,000 --> 00:24:59,000 내가 당신에게 모든 배열 인 경우. 340 00:24:59,000 --> 00:25:02,000 이 문자열에서 작동하는 이유, 그 이유 나 strlen 작품 341 00:25:02,000 --> 00:25:06,000 이 문자열이 제대로 포맷을하면, 342 00:25:06,000 --> 00:25:12,000 그것은 매우 끝 부분에 특별한 \ 0 문자를해야합니다. 343 00:25:12,000 --> 00:25:16,000 >> 당신이 잘못 서식이 지정된 문자열이있는 경우 당신은 또한 상상할 수 344 00:25:16,000 --> 00:25:20,000 어떠한 \ 0 문자가 없습니다 다음, 그 일 전체가 작동하지 않습니다. 345 00:25:20,000 --> 00:25:22,000 [학생]는 당신이 \ 0을 추가 할 수 있습니까? 346 00:25:22,000 --> 00:25:24,000 이 경우 수. 347 00:25:24,000 --> 00:25:29,000 우리는 \ 0 어떤 종류의를 추가 할 수 있습니다 348 00:25:29,000 --> 00:25:33,000 또는 다음 문자를 뜻하고 어떤 종류의가 있다고 사용합니다. 349 00:25:33,000 --> 00:25:36,000 하지만 그게 잘 작동하지 않을거야 350 00:25:36,000 --> 00:25:40,000 \ 0 문자 유형에 있기 때문에 351 00:25:40,000 --> 00:25:43,000 여기 우리는 ints있어. 352 00:25:43,000 --> 00:25:46,000 우리가 특별한 값을 사용한다면 다른 점은 353 00:25:46,000 --> 00:25:49,000 -1과 같은 배열의 끝을 표시하는 354 00:25:49,000 --> 00:25:54,000 그리고 우리는 우리의 정수 배열에 -1을 저장하지 않습니다 수 있습니다. 355 00:25:54,000 --> 00:25:56,000 우리는 붙어 거에요. 356 00:25:56,000 --> 00:26:00,000 그것은 밝혀 그 길이를 얻을 수있는 유일한 방법 357 00:26:00,000 --> 00:26:03,000 C에서 배열의 실제를 기억하는 것입니다 358 00:26:03,000 --> 00:26:08,000 당신은 그걸 설정하고 다음 배열과 주변을 통과 할 때 359 00:26:08,000 --> 00:26:14,000 그래서 나는 일을 할거야 함수가있을 때마다 360 00:26:14,000 --> 00:26:18,000 정수 또는 수레의 배열 또는 두 배 또는 어떤이, 361 00:26:18,000 --> 00:26:22,000 나는 또한,이 함수에게 배열의 길이를 줄 필요가 362 00:26:22,000 --> 00:26:26,000 그리고 우리가 검색 기능에 여기까지 해낸 게 맞아요. 363 00:26:26,000 --> 00:26:30,000 당신은 우리 마을은 우리가 배열에 통과 할 때 우리가 한 일을, 보면 364 00:26:30,000 --> 00:26:36,000 우리는 또한 길이, 크기를 전달합니다. 365 00:26:36,000 --> 00:26:41,000 단지, 우리가이 변수를 호출 한 일이 366 00:26:41,000 --> 00:26:43,000 이 매개 변수 또는 인수입니다. 367 00:26:43,000 --> 00:26:46,000 이것은 함수의 인수 목록이나 매개 변수 목록을 호출 368 00:26:46,000 --> 00:26:51,000 이러한도 인수 또는 매개 변수라고합니다. 369 00:26:51,000 --> 00:26:53,000 사람들은 서로 다른 시간에 서로 다른 용어를 사용합니다. 370 00:26:53,000 --> 00:26:55,000 가끔 그들에게 자신을 교류. 371 00:26:55,000 --> 00:27:00,000 그것은 너무 여기에 변수가 유사라는 것을 어떻게 372 00:27:00,000 --> 00:27:03,000 이 # 여기서 정의합니다. 373 00:27:03,000 --> 00:27:06,000 하지만 그들은 같은 일 아니야. 374 00:27:06,000 --> 00:27:11,000 대문자는 상관하지 않습니다. 375 00:27:11,000 --> 00:27:14,000 >> 여기에 무슨 일을 보면, 우리는 선언 376 00:27:14,000 --> 00:27:18,000 우리가 숫자라고 한 우리 INT 배열. 377 00:27:18,000 --> 00:27:23,000 우리는 우리의가 # 맨 위에 정의하기 위해 해당의 크기를 드렸습니다. 378 00:27:23,000 --> 00:27:27,000 그것은 8거야. 379 00:27:27,000 --> 00:27:35,000 그리고 우리는 다음 아래의 검색 기능을 호출 할 때 380 00:27:35,000 --> 00:27:40,000 우리는 우리가하라는 메시지가되는, 우리가 검색 할 수에 전달 381 00:27:40,000 --> 00:27:43,000 사용자의 잊어 버렸어요. 382 00:27:43,000 --> 00:27:46,000 우리는, 배열이 숫자를 전달 383 00:27:46,000 --> 00:27:51,000 그리고 우리는 또한, 배열의 크기에 통과해야 384 00:27:51,000 --> 00:27:57,000 그리고 크기 8의 값이 저장됩니다 385 00:27:57,000 --> 00:28:01,000 또는이 정수라는 변수 크기로 통과 시켰습니다. 386 00:28:01,000 --> 00:28:08,000 우리는 배열의 크기만큼의 공간을 확보한다. 387 00:28:08,000 --> 00:28:11,000 우리는 우리가 이전에 무슨 말을하는지로 돌아가, 지금 경우 388 00:28:11,000 --> 00:28:14,000 나는 미시 우리가해야할 일을하면 배열의 길이를 얻을이라는 점을 왔다고 생각 389 00:28:14,000 --> 00:28:20,000 2로 나누면, 그리고 우리에게 중간 지점을 제공합니다. 390 00:28:20,000 --> 00:28:22,000 어디 봅시다. 391 00:28:22,000 --> 00:28:25,000 누군가가이 작성하고 자신의 공간에 저장 할 수 있습니까? 392 00:28:25,000 --> 00:28:27,000 어떻게 라일라는? 393 00:28:27,000 --> 00:28:31,000 당신이이 일에 작성 할 수 있습니까? 394 00:28:31,000 --> 00:28:35,000 당신이 배열의 길이를 타고 중간 지점을 어디에서 첫 번째 행을 작성 395 00:28:35,000 --> 00:28:41,000 하고 새 변수에 저장합니다. 396 00:28:41,000 --> 00:28:44,000 내가 몇 초를 제공합니다. 준비 됐어? 397 00:28:44,000 --> 00:28:46,000 [학생 들리게] 398 00:28:46,000 --> 00:28:50,000 물론, 중간 지점을 계산 수 399 00:28:50,000 --> 00:28:55,000 검색 기능 내부의 건초 더미 배열의 400 00:28:55,000 --> 00:29:03,000 건초 더미 배열의 길이를 사용하여 어느 크기 변수? 401 00:29:03,000 --> 00:29:08,000 여기에 까다로운 아무것도. 402 00:29:08,000 --> 00:29:12,000 [라일라] 단 크기 / 2 단지 403 00:29:12,000 --> 00:29:17,000 그리고 그것을 저장하고, 상단에 여기까지 저장 버튼을 누르면 404 00:29:17,000 --> 00:29:19,000 우리는 그걸 당겨 버릴거야. 405 00:29:19,000 --> 00:29:22,000 좋아요. 406 00:29:22,000 --> 00:29:28,000 우리는 간다. 짱이다. 407 00:29:28,000 --> 00:29:30,000 >> 으로,이 컴파일 되나요? 408 00:29:30,000 --> 00:29:32,000 [라일라] 아니, 더 있어야합니다. 409 00:29:32,000 --> 00:29:34,000 [네이트] 그래, 우리가 무엇을해야합니까? 410 00:29:34,000 --> 00:29:36,000 [라일라] INT 중간 지점이나 뭐처럼. 411 00:29:36,000 --> 00:29:41,000 짱이다. 그래, 그게, int는 중간 지점 = 크기가하자. 412 00:29:41,000 --> 00:29:44,000 이 컴파일 되나요? 413 00:29:44,000 --> 00:29:47,000 의이 댓글을 삭제하고 비켜 보자. 414 00:29:47,000 --> 00:29:50,000 이것에 대해 어떻게 컴파일하지 않습니다? 415 00:29:50,000 --> 00:29:52,000 우리는, 정수와 아무 짓도 안하는데 416 00:29:52,000 --> 00:29:55,000 그래서 우리는 그 또는 그런 짓을 인쇄해야합니다. 417 00:29:55,000 --> 00:29:58,000 네, 맞아요. 418 00:29:58,000 --> 00:30:00,000 우리는 사용하지 않는 변수를 얻을 수 있습니다. 419 00:30:00,000 --> 00:30:02,000 다른이에 대해 안 먹힌다? 420 00:30:02,000 --> 00:30:06,000 당신이 샘 무언가를했다 생각합니다. 세미콜론. 421 00:30:06,000 --> 00:30:08,000 그래, 난 그 세미콜론 누락되었습니다. 422 00:30:08,000 --> 00:30:14,000 이 용어의 과정에 걸쳐 일정한 일이 생길거야. 423 00:30:14,000 --> 00:30:17,000 내가 할게 마지막으로 한가지는 내가 양쪽에 일부 공백을 올려 놓으입니다 424 00:30:17,000 --> 00:30:23,000 여기에서이 연산자, 우리가 어떻게 일반적이야 이후 425 00:30:23,000 --> 00:30:26,000 우리의 스타일 가이드에 따라. 426 00:30:26,000 --> 00:30:29,000 우리는 배열의 중간 지점에있어. 427 00:30:29,000 --> 00:30:32,000 우리는 알고리즘으로 기억 지금 경우, 428 00:30:32,000 --> 00:30:37,000 우리가 중간 지점을 한 번 짓을 할 수 밖에 없었던 그 두 번째 단계는 무엇 이었습니까? 429 00:30:37,000 --> 00:30:42,000 [학생]가 더 있으면 [안 들리게]. 430 00:30:42,000 --> 00:30:48,000 그래, 우리가 비교 일종의해야하고, 우리가 무엇을 비교하는거야? 431 00:30:48,000 --> 00:30:53,000 당신은보다 큰 경우이다. 를 참조 그 문장에서 그게 뭐야? 432 00:30:53,000 --> 00:30:57,000 그 중간 지점보다 더 큰면 올라 오는 숫자는, 다음 배열에 올라가? 433 00:30:57,000 --> 00:31:05,000 맞아요, 그래서 숫자가 오면 우리​​ - 434 00:31:05,000 --> 00:31:10,000 바늘은, 그래서 우리는 바늘로 비교 435 00:31:10,000 --> 00:31:12,000 우리는 바늘에 대해 무엇을 비교하는거야? 436 00:31:12,000 --> 00:31:15,000 바늘이 우리가 원하는 때문입니다. 437 00:31:15,000 --> 00:31:18,000 우리는 중간 지점에 도착을 비교하고 있습니다. 438 00:31:18,000 --> 00:31:21,000 >> 그러나 확인하는 것이 비참하게 439 00:31:21,000 --> 00:31:27,000 바늘 =의 중간 지점에 있다면? 440 00:31:27,000 --> 00:31:32,000 그게 말이나 돼? 441 00:31:32,000 --> 00:31:35,000 누가 반대합니까? 442 00:31:35,000 --> 00:31:40,000 만약의이에게 해를 줘 보자 (바늘 == 중간). 443 00:31:40,000 --> 00:31:42,000 [학생] printf 당신은 그걸 발견 마십시오. 444 00:31:42,000 --> 00:31:51,000 [네이트] Printf ( "우리는 발견 \ N!"); 445 00:31:51,000 --> 00:31:56,000 그렇지 않으면 - 난 여기에 다른 일을 시작하려고. 446 00:31:56,000 --> 00:32:00,000 난 항상 if와 주변에 괄호를 넣어 시작 할거야 447 00:32:00,000 --> 00:32:05,000 왜냐하면 우리는 더 많은 물건을 추가하는 경우 448 00:32:05,000 --> 00:32:07,000 우리는 컴파일러를하지 않습니다. 449 00:32:07,000 --> 00:32:09,000 네, 샘. 당신 말도 일리가있어. 450 00:32:09,000 --> 00:32:12,000 문제는 중간 지점에서 배열의 위치를​​ 나타냅니다 있다는 것입니다 451 00:32:12,000 --> 00:32:15,000 하지만 당신은이 배열의 해당 위치에있는 값을 표현하기 위해 수 있습니다. 452 00:32:15,000 --> 00:32:17,000 그건 좋은 점입니다. 453 00:32:17,000 --> 00:32:19,000 모든 사람들이 샘 말 들었어? 454 00:32:19,000 --> 00:32:22,000 그는 그 중간 지점에있는 그대로 말했다 455 00:32:22,000 --> 00:32:28,000 배열의 단지 위치를 나타냅니다,하지만 배열의 실제 요소 아닙니다. 456 00:32:28,000 --> 00:32:30,000 지금 당장 서면으로 코드에 대해 생각한다면, 457 00:32:30,000 --> 00:32:35,000 우리가 여기이 배열 보면, 그, 그건 8 요소를 가지고 458 00:32:35,000 --> 00:32:39,000 중간 지점이 기능에 놓이게 될 것의 가치는 무엇인가? 459 00:32:39,000 --> 00:32:41,000 [학생] 4. 460 00:32:41,000 --> 00:32:45,000 [네이트] 4. 461 00:32:45,000 --> 00:32:51,000 우리는 4 번에 보면 - 462 00:32:51,000 --> 00:32:54,000 그리고 우리는이 코드를 실행하고 여기에 약간 슬픈 얼굴을 넣을 수 있습니다 463 00:32:54,000 --> 00:32:58,000 우리가이 코드를 실행 IT-하면 우리는 못 찾아서 464 00:32:58,000 --> 00:33:04,000 로가 업로드, 바로 지금이고, 건물은, 저를 아래로 스크롤 해 465 00:33:04,000 --> 00:33:09,000 우리는 숫자 4를 살펴보면, 466 00:33:09,000 --> 00:33:18,000 우리는 찾았는데, 우리는 printf 예이 알아 내지 못 했어. 467 00:33:18,000 --> 00:33:23,000 한 가지 이유는 우리가 TRUE를 반환하지 않은 것입니다, 468 00:33:23,000 --> 00:33:26,000 하지만 우리는 정말 숫자 4를 찾았습니까? 469 00:33:26,000 --> 00:33:28,000 그리고 샘은 말을하지 않습니다. 470 00:33:28,000 --> 00:33:31,000 우리가 뭘 찾았나요? 471 00:33:31,000 --> 00:33:35,000 우리는 정말 우리가 여기까지 배열 보면 중간 지점을 발견 472 00:33:35,000 --> 00:33:38,000 그것은, 우리가보고있는 인덱스 4에 요소 될거야 473 00:33:38,000 --> 00:33:42,000 어느 23입니다. 474 00:33:42,000 --> 00:33:46,000 >> 우리가 어떻게 실제로 중간 지점에서 해당 요소를 어떻게해야합니까 475 00:33:46,000 --> 00:33:48,000 뿐 아니라 중간 지점 자체? 476 00:33:48,000 --> 00:33:52,000 [학생] 우리는 숯불이나 뭐 입력해야합니까? 477 00:33:52,000 --> 00:33:55,000 그냥 궁금해서 묻는 건데, 그게 무슨 소용이지? 478 00:33:55,000 --> 00:33:57,000 당신은 좀 더 말씀해 할 수 있습니까? 479 00:33:57,000 --> 00:34:02,000 당신은 번호로 위치를 변환해야 480 00:34:02,000 --> 00:34:05,000 그래서 당신은해야하는데 몇 가지 연결 -이게 숯불하다고 생각하지만되지 않을 수 있습니다. 481 00:34:05,000 --> 00:34:07,000 네, 좋은 지적이야. 482 00:34:07,000 --> 00:34:12,000 우리는 문자, 이러한 문자로이 변환 순위 많이 해 봤는데 483 00:34:12,000 --> 00:34:14,000 처음 두 문제 세트 인치 484 00:34:14,000 --> 00:34:18,000 여기,이 거의 비슷하다고 밝혀 485 00:34:18,000 --> 00:34:24,000 그 말이 경우, 문자열 내에서 i 번째 문자를 액세스. 486 00:34:24,000 --> 00:34:30,000 여기 우리는 중간 지점 요소를 액세스 할. 487 00:34:30,000 --> 00:34:34,000 어떻게 그렇게 우리합니까? 488 00:34:34,000 --> 00:34:39,000 케빈, 당신은 어떻게 그런 수있는 방법이 있나요? 489 00:34:39,000 --> 00:34:44,000 당신은 건초 더미 할 수있는, 오픈 브래킷, 중간은 브래킷을 마감했다. 490 00:34:44,000 --> 00:34:46,000 당신은 우리를 위해 쓰기 할 수 있습니까? 491 00:34:46,000 --> 00:34:51,000 여기에 저장, 우리는 그 기회를 당겨 버릴거야. 492 00:34:51,000 --> 00:34:56,000 우리는,이 9 호선보고 493 00:34:56,000 --> 00:34:59,000 우리는, 우리는 중간 지점에 바늘을 비교하지 않으려는 인식하고 494 00:34:59,000 --> 00:35:03,000 대신, 우리는 바늘을 비교하려면 495 00:35:03,000 --> 00:35:07,000 우리 건초 더미 배열에서 위치 중간 지점에있는 요소. 496 00:35:07,000 --> 00:35:10,000 좋아. 497 00:35:10,000 --> 00:35:12,000 우리는 간다. 498 00:35:12,000 --> 00:35:15,000 그래, 그게 꽤 잘 하는군, IF (바늘 == 건초 더미 [중간]). 499 00:35:15,000 --> 00:35:18,000 우리가 발견했다. 500 00:35:18,000 --> 00:35:22,000 이제 우리는 조금 업 코드 - 병원을 다시 실행하는 경우 501 00:35:22,000 --> 00:35:26,000 , 그것은 컴파일, 그건 실행, 이제 우리는 4 살펴보면 502 00:35:26,000 --> 00:35:30,000 지금 우리가 실제로 23 번을 받고 있기 때문에 우리는 그것을 찾을 수 없습니다. 503 00:35:30,000 --> 00:35:33,000 우리는 값 23을 받고있어, 우리가 우리의 바늘로 비교하는거야. 504 00:35:33,000 --> 00:35:35,000 하지만 그건 좋아. 그것은 올바른 방향으로 단계입니다. 505 00:35:35,000 --> 00:35:37,000 >> 우리가 뭘 하려는지입니다. 506 00:35:37,000 --> 00:35:40,000 우리는 배열의 위치에 대해 바늘을 비교하려고하지 507 00:35:40,000 --> 00:35:44,000 오히려 배열의 실제 요소에 대한. 508 00:35:44,000 --> 00:35:49,000 우리는 알고리즘의 다음 단계에서 지금 다시 보면, 509 00:35:49,000 --> 00:35:51,000 다음 단계는 무엇인가? 510 00:35:51,000 --> 00:35:57,000 라일라는 이미 짧게 언급. 511 00:35:57,000 --> 00:36:00,000 [학생]는 이동 방법을 결정 후보다 크거나 미만이고 있는지 확인합니다. 512 00:36:00,000 --> 00:36:03,000 [네이트] 그래, 어떻게 그렇게 우리 하죠? 513 00:36:03,000 --> 00:36:07,000 이 버전을 저장 일부 - 내가에 넣을 수 있습니다, 514 00:36:07,000 --> 00:36:13,000 그리고 당신은 그렇게 할 것입니다 몇 줄에 넣어 경우. 515 00:36:13,000 --> 00:36:15,000 네, 샬롯. >> 질문이 있습니다. 516 00:36:15,000 --> 00:36:19,000 우선하기 때문에 1 -가 중간 지점에 있어야하지 않나요 517 00:36:19,000 --> 00:36:26,000 그것은 실제로 우리가 찾고있는 문자 야, 우리는 4 넣어하면, 인덱스 0 거죠? 518 00:36:26,000 --> 00:36:30,000 그래, 다른 문제가 그와 함께 -은 519 00:36:30,000 --> 00:36:35,000 어떤 가능성이 일어나고 결국 것입니다 때문에 대단한 함정 520 00:36:35,000 --> 00:36:42,000 우리가 움직 유지하고있는 경우, 우리가 만약 처음에 조정하지 않습니다? 521 00:36:42,000 --> 00:36:46,000 난 우리가 일을 결국 수 있었는지에 액세스하려는 522 00:36:46,000 --> 00:36:49,000 배열의 8 위치에서 요소 523 00:36:49,000 --> 00:36:53,000 어떤이 경우에 존재하지 않습니다. 524 00:36:53,000 --> 00:36:56,000 우리는 사실을 회계 어떤 종류의 작업을 수행하기를 원할 것입니다 525 00:36:56,000 --> 00:36:59,000 우리는 제로 색인을 의미합니다. 526 00:36:59,000 --> 00:37:05,000 [샬롯] 죄송 해요, 중간 지점 뜻 - 대괄호 1. 527 00:37:05,000 --> 00:37:08,000 우리가 그렇게 할 수 있습니다. 528 00:37:08,000 --> 00:37:10,000 우리는 잠시이 문제에 돌아올거야. 529 00:37:10,000 --> 00:37:13,000 일단 우리가 실제 루핑까지 시작 530 00:37:13,000 --> 00:37:16,000 우리가이 역할을하게 나타납니다 때입니다. 531 00:37:16,000 --> 00:37:21,000 당분간은, 우리는이 작업을 수행 할 수는 있지만 완전히 맞아. 532 00:37:21,000 --> 00:37:28,000 제로 색인을 생성 우리가 설명 할 필요가 효과를 써야합니다. 533 00:37:28,000 --> 00:37:30,000 어디 봅시다. 534 00:37:30,000 --> 00:37:34,000 >> 어떻게보다 더 큰 미만 -?는 535 00:37:34,000 --> 00:37:36,000 [학생] 나는보다 더 큰 적은 부분​​보다 작업을 수행하는 방법을 얻을. 536 00:37:36,000 --> 00:37:41,000 난 그냥 당신이 건초 더미의 중간 지점보다 작거나보다 큰 것을 발견하면 인쇄할지 아니 었습니다. 537 00:37:41,000 --> 00:37:43,000 난 여기 절약 할 수 있습니다 무엇 두었 - 538 00:37:43,000 --> 00:37:47,000 [네이트] 그래, 당신이 당신이 가진 것을 저장하고, 우리는 그것을 올려 드리겠습니다. 539 00:37:47,000 --> 00:37:49,000 우리는 간다. 540 00:37:49,000 --> 00:37:51,000 [학생] 그리고 내가 몰랐 일에 물음표를 넣어. 541 00:37:51,000 --> 00:37:54,000 [네이트] 아주 좋아요. 542 00:37:54,000 --> 00:37:58,000 우리가 아직도 모르는 없기 때문에 우리는 여기 질문 흔적을 찾았어요 543 00:37:58,000 --> 00:38:06,000 우리는 아직 어떻게 할 거냐. 544 00:38:06,000 --> 00:38:12,000 우리는 어떻게 - 죄송합니다, 우리는 몇 가지 괄호 우리의 모든 펑키이있어 할 것입니다. 545 00:38:12,000 --> 00:38:15,000 이러한 치아 교정기를 수정합니다. 546 00:38:15,000 --> 00:38:19,000 우리는 간다. 547 00:38:19,000 --> 00:38:22,000 그래서 우리는, 우리의 알고리즘에 따라 어떻게할까요 548 00:38:22,000 --> 00:38:27,000 우리는 바늘을 찾을 수없는 경우 어떻게해야합니까? 549 00:38:27,000 --> 00:38:32,000 바늘은 우리가보고있는 것보다 더 적은 것을 경우 말해봐. 케빈. 550 00:38:32,000 --> 00:38:34,000 만 왼쪽 이분의 일 봐. 551 00:38:34,000 --> 00:38:40,000 좋아, 그래서 우리는 말합니다 여기에 댓글 올려 놓을 게요 "왼쪽 이분의 일을 봐." 552 00:38:40,000 --> 00:38:46,000 바늘이 중간 지점에있는 건초 더미보다 더 크다면, 우리는 어떻게할까요? 553 00:38:46,000 --> 00:38:48,000 [학생] 그런 다음 오른쪽 절반보세요. 554 00:38:48,000 --> 00:38:53,000 오른쪽 절반을 봐 "오른쪽 절반 봐." 555 00:38:53,000 --> 00:38:58,000 너무 초라한. 556 00:38:58,000 --> 00:39:05,000 좋아, 그럼이 시점에서, 만사가 아주 좋은 찾고 있습니다. 557 00:39:05,000 --> 00:39:13,000 서면으로 코드의 문제는 무엇인가? 558 00:39:13,000 --> 00:39:15,000 [학생] 당신은 절반에 대한 끝점이 없습니다. 559 00:39:15,000 --> 00:39:18,000 네, 우리는 절반에 대한 끝점이 없습니다. 560 00:39:18,000 --> 00:39:20,000 우리는 또한 한 번만를 통해 갈 수 있습니다. 561 00:39:20,000 --> 00:39:23,000 우리는 하나의 중간 지점 보는거야. 562 00:39:23,000 --> 00:39:27,000 어느 요소가있다, 또는 그렇지 않아. 563 00:39:27,000 --> 00:39:34,000 이 완료하기 위해, 우리는 반복 어떤 종류의 작업을 수행해야합니다. 564 00:39:34,000 --> 00:39:39,000 우리는 우리가 발견 할 때까지 계속 같은 말만해야 565 00:39:39,000 --> 00:39:43,000 우리가 좁혀 마지막으로, 그것을 발견하기 때문에 두 요소는 거기에있다 566 00:39:43,000 --> 00:39:46,000 누군가가 거기에 우리는 모든 일을 보았다 한 게 아니니까 567 00:39:46,000 --> 00:39:52,000 배열의 해당 절반 및 아무것도 거기에없는 것으로 나타났습니다. 568 00:39:52,000 --> 00:39:56,000 >> 우리가이 반복이 계속 한 때마다, 우리는 사용하는거야? 569 00:39:56,000 --> 00:39:58,000 [학생] 루프. 570 00:39:58,000 --> 00:40:00,000 루프의 일종. 예. 571 00:40:00,000 --> 00:40:03,000 [학생] 우리는 DO-동안 루프를 수행하고있는 동안 해당 작업을 수행하고이 수 572 00:40:03,000 --> 00:40:10,000 바늘 내가 그와 함께가는 곳에서는 평등 - 난하지 않습니다. 573 00:40:10,000 --> 00:40:18,000 그러나 같은 일이 그렇게 오래가 동일한 값을 해당 사용자 입력하지 않는 한. 574 00:40:18,000 --> 00:40:21,000 그래, 어디 보자, 어떻게 자체를 작성 있을까요? 575 00:40:21,000 --> 00:40:23,000 당신 생각 DO-동안 루프를 사용하게했다. 576 00:40:23,000 --> 00:40:26,000 시작을 어디서하나요? 577 00:40:26,000 --> 00:40:33,000 오른쪽 크기 / 2 후 [학생]. 578 00:40:33,000 --> 00:40:42,000 [네이트] 좋아, 우리는 무엇을해야하지? 579 00:40:42,000 --> 00:40:44,000 우리는 나중에 경우에 작성됩니다. 580 00:40:44,000 --> 00:40:46,000 우리는 무엇을 어떻게 할 건데? 581 00:40:46,000 --> 00:40:49,000 [학생] 우리가 경우 부분에있는 모든 물건을 해보고 싶지 않아? 582 00:40:49,000 --> 00:40:52,000 [네이트]이 모든 일을, 좋아. 583 00:40:52,000 --> 00:40:55,000 복사 및 붙여 넣기. 584 00:40:55,000 --> 00:40:59,000 오, 이런. 585 00:40:59,000 --> 00:41:03,000 보자의 경우이 작품을, 우리는 탭이 끝날를 할 수 있는지는. 586 00:41:03,000 --> 00:41:08,000 아름다운. 587 00:41:08,000 --> 00:41:16,000 너희들이 가지고 있도록 그래, 우리는이를 저장합니다. 588 00:41:16,000 --> 00:41:21,000 좋아, 우리는이 작업을 수행하려고하는 동안 - 589 00:41:21,000 --> 00:41:25,000 이 후했다 동안 조건은 무엇입니까? 590 00:41:25,000 --> 00:41:31,000 [학생] 바늘이 동일하지 않지만, 그래서 느낌표처럼. 591 00:41:31,000 --> 00:41:37,000 하지만 그런 일이 아직 정확히 모르겠습니다. 592 00:41:37,000 --> 00:41:39,000 [네이트] 그래, 할 한 방법입니다. 593 00:41:39,000 --> 00:41:41,000 샘, 당신은 코멘트를해야합니까? 594 00:41:41,000 --> 00:41:43,000 [샘] 나는 비디오를 바라 보았다 때 기억, 595 00:41:43,000 --> 00:41:48,000 우리가에 대한 의사 짓을 할 때, 같은 중 하나의 스크린 샷을했다 596 00:41:48,000 --> 00:41:52,000 맥스와 분 사이의 관계가 발생했습니다. 597 00:41:52,000 --> 00:41:58,000 나는 맥스가 분 때보 다 작다면 같은 생각. 598 00:41:58,000 --> 00:42:00,000 알았어요. 599 00:42:00,000 --> 00:42:04,000 [샘] 또는 최대이 그런 분이라도 미만이 아닌 경우처럼, 600 00:42:04,000 --> 00:42:06,000 그건 당신이 모든 검색 한 의미 때문입니다. 601 00:42:06,000 --> 00:42:13,000 >> 그래, 어떻게하면 맥스와 분을 나타내는 것 같은 소리입니까? 602 00:42:13,000 --> 00:42:16,000 변경하려고 [샘] 값이 - 정수 603 00:42:16,000 --> 00:42:18,000 우리는 중간 지점을 넣는에 상대적으로. 604 00:42:18,000 --> 00:42:20,000 그렇지. 605 00:42:20,000 --> 00:42:24,000 [샘] 그 시점에서, 무슨 일이 [안 들리게] 맥스와 분을 계산합니다.거야 606 00:42:24,000 --> 00:42:29,000 중간 지점이 최대 및 최소 생각입니다. 607 00:42:29,000 --> 00:42:35,000 그 사람들을 이해합니까? 608 00:42:35,000 --> 00:42:39,000 우리는 어떻게 우리가이 반복 할 수있는 것을보고 시작한다면, 609 00:42:39,000 --> 00:42:43,000 당신은 우리가 어떻게 - 동안 루프의 어떤 종류를 사용하고자하는 완전히 맞아. 610 00:42:43,000 --> 00:42:49,000 우리가이 배열의 지점에 무슨 일이 일어나고 있는지 기억한다면 내 생각 611 00:42:49,000 --> 00:42:53,000 과 실제로 일어나는 일 - 전 이상 쓸 거에요 - 여기 612 00:42:53,000 --> 00:42:58,000 이진 검색의 최초의 반복에, 우리는이 - 613 00:42:58,000 --> 00:43:05,000 나는 시작을 나타 내기 위해 B와 전자를 사용하는거야. 614 00:43:05,000 --> 00:43:10,000 그리고 우리의 배열의 끝. 615 00:43:10,000 --> 00:43:14,000 우리는 시작이 여기 네 오른쪽 것을 알고 616 00:43:14,000 --> 00:43:18,000 우리는 끝이 108에 것을 알고있다. 617 00:43:18,000 --> 00:43:23,000 우리가 15 번째를 검색하고 말해. 618 00:43:23,000 --> 00:43:27,000 우리가이 일을 처음처럼 우리는 전에 보았던 619 00:43:27,000 --> 00:43:30,000 중간는 16 또는 23이 될 것입니다 620 00:43:30,000 --> 00:43:34,000 우리가 일을 계산하는 방법에 따라 다릅니다. 621 00:43:34,000 --> 00:43:37,000 고르게 중간에 나누어 때문에하는 것은 우리에게이 공간을 줄 거라 622 00:43:37,000 --> 00:43:42,000 16 23 사이에, 우리는 균등하게 나누어 할 수 없습니다 623 00:43:42,000 --> 00:43:47,000 하거나 분할하고 진정한 중간을 얻을 수 있습니다. 624 00:43:47,000 --> 00:43:49,000 우리는 16 보겠습니다. 625 00:43:49,000 --> 00:43:55,000 우리는 "우리가 찾고 야, 16> 15."실현됩니다 626 00:43:55,000 --> 00:43:59,000 다음 배열의 왼쪽 이분의 일를보고 627 00:43:59,000 --> 00:44:03,000 우리가 일을 끝낼 거라고 버리는 것입니다 628 00:44:03,000 --> 00:44:07,000 전체 상단 부분 629 00:44:07,000 --> 00:44:16,000 그리고 "자, 이제 엔드 포인트는 여기에 될 것입니다."라고 630 00:44:16,000 --> 00:44:22,000 우리 루프의 다음 반복, 우리는 지금이 배열보고, 631 00:44:22,000 --> 00:44:25,000 효과적으로 왜냐하면 지금이 부분을 폐기 것으로 632 00:44:25,000 --> 00:44:30,000 우리는 시작과 끝의 차이로 중간 지점을 복용하는 경우, 633 00:44:30,000 --> 00:44:34,000 우리는 우리의 중간 지점 8로 찾기 634 00:44:34,000 --> 00:44:40,000 어떤 우리가 다음 우리가 찾고있는 수에 관계에 위치가 표시 8 테스트 할 수 있습니다, 635 00:44:40,000 --> 00:44:44,000 15, 15 이상이라는 것을 알게 636 00:44:44,000 --> 00:44:49,000 그래서 우리는 목록의 오른쪽 부분으로 이동해야 637 00:44:49,000 --> 00:44:51,000 우리가 인간이고, 우리가 볼 수 있기 때문에있는 우리는 알아요. 638 00:44:51,000 --> 00:44:54,000 우리는 우리가 찾아 어디에서 오른쪽 부분이 될 것입니다 알고 639 00:44:54,000 --> 00:45:01,000 하지만 컴퓨터는 우리가 무슨 짓을할지 우리가 실제로드립니다이며, 알고하지 않습니다 640 00:45:01,000 --> 00:45:04,000 이 가서, 이제 시작과 끝이 641 00:45:04,000 --> 00:45:11,000 동일한 곳이며,, 중간 지점이 지점에서 목록에있는 유일한 번호가됩니다하므로 642 00:45:11,000 --> 00:45:16,000 어떤은 15이며, 우리가 찾았습니다. 643 00:45:16,000 --> 00:45:21,000 즉,이 모든 최대 및 최소 표기법이가는 곳에 대해 설명해 주실 않습니다 644 00:45:21,000 --> 00:45:24,000 파악하기 위해 배열의 끝점 추적을 지키는 645 00:45:24,000 --> 00:45:35,000 일의 범위를 좁힐하는 방법? 646 00:45:35,000 --> 00:45:42,000 >> 이 지금 15 동일하지 않는다면 어떻게 될까요? 647 00:45:42,000 --> 00:45:52,000 우리가 대신 15, 찾고 있다면,이 숫자는 16 계셨습니까? 648 00:45:52,000 --> 00:45:54,000 우리는 오, 더 큰입니다 "라고 대답 하시 겠네요. 649 00:45:54,000 --> 00:45:57,000 우리는 왼쪽으로 돌아 가고 싶어요. " 650 00:45:57,000 --> 00:46:01,000 그리고 우리는, 오른쪽에 우리의 전자를 이동 할 651 00:46:01,000 --> 00:46:06,000 에서 그 시점 우리가 충돌 될 종점을 갖추고 있습니다. 652 00:46:06,000 --> 00:46:09,000 그것은 더 이상 요소를 검색 할 수 없을 것입니다 653 00:46:09,000 --> 00:46:13,000 이제 우리는 우리의 종점과 시작 지점을 가지고 있기 때문에 654 00:46:13,000 --> 00:46:16,000 우리의 최대와 최소, 지금은 뒤집혀 있습니다. 655 00:46:16,000 --> 00:46:23,000 우리는 전체 배열을 통해 검색 할 수 있습니다. 우리는 아무 것도 찾을 수 없습니다. 656 00:46:23,000 --> 00:46:27,000 우리가 좋아요, 우리가이 알고리즘을 중지 할거야 "하고 싶은 말하려는 시점입니다. 657 00:46:27,000 --> 00:46:34,000 우리는 아무것도 발견되지 않았습니다. 우리는 여기에없는 거 알아. " 658 00:46:34,000 --> 00:46:36,000 이 어떻게가는거야? 659 00:46:36,000 --> 00:46:40,000 [학생]는 정확히 어떻게 컴퓨터가 끝을 전환합니까? 660 00:46:40,000 --> 00:46:45,000 어떻게 끝은 시작하기 전에 됐을까? 661 00:46:45,000 --> 00:46:48,000 끝은 시작 전에 종료 662 00:46:48,000 --> 00:46:54,000 때문에 우리가이 작업을 수행 할 때마다 할 수있는 것있는 수학의. 663 00:46:54,000 --> 00:47:00,000 우리가 바꿔 치기 할 방법은 처음 보면 우리가 스왑을 할 수 있습니다 664 00:47:00,000 --> 00:47:03,000 우리는 4에 시작과 끝이있는 곳 665 00:47:03,000 --> 00:47:13,000 모든 108에서 멀리 우리의 중간 지점은 16에서, 말 - 666 00:47:13,000 --> 00:47:20,000 우리가 15를 찾고 15 경우는이 다시 재설정 갈거야 667 00:47:20,000 --> 00:47:25,000 우리는 16를 체크 할 때 우리가 한 짓을 것을 알고 있으며 더 큰 걸보고 668 00:47:25,000 --> 00:47:28,000 그리고 목록의 전체 오른쪽 부분을 삭제하고 싶어 669 00:47:28,000 --> 00:47:36,000 우리는 우리가해야 할 원하는 것은 바로이 전자를 이동 것을 보았다. 670 00:47:36,000 --> 00:47:44,000 효과적으로 전자는 중간 지점 전에 하나에 옮겨 졌어. 671 00:47:44,000 --> 00:47:48,000 마찬가지로, 우리는 알고리즘의 반복을 언제 672 00:47:48,000 --> 00:47:51,000 그리고 중간 지점은, 8에 있었어요 673 00:47:51,000 --> 00:47:55,000 우리는 8 <15, 그래서 우리는 B를 이동하고 싶다고 발견 674 00:47:55,000 --> 00:48:00,000 중간 과거 하나입니다. 675 00:48:00,000 --> 00:48:07,000 자, 시작과 끝이 15에서 함께에 있습니다. 676 00:48:07,000 --> 00:48:10,000 >> 우리는 다른 값이 아닌 15을 찾기 위해 일어난하려면 677 00:48:10,000 --> 00:48:14,000 또는이 15 대신 16 였다면 678 00:48:14,000 --> 00:48:20,000 우리는 전자 우리가 중간 지점 전에 하나를 이동하려는 것으로 나타났습니다 것입니다. 679 00:48:20,000 --> 00:48:33,000 이제 e는 b보다 적은이 뒤집힌 것입니다. 680 00:48:33,000 --> 00:48:39,000 의 우리가 실제로이 알고리즘을 코딩 결국 어떻게 통과 보자. 681 00:48:39,000 --> 00:48:44,000 우리는 우리가이 중간 지점 계산을 할 알아요. 682 00:48:44,000 --> 00:48:48,000 우리는 시작과 배열의 끝을 추적 할 수도 알 683 00:48:48,000 --> 00:48:51,000 현재 배열의 그래서 우리가 알아낼 수 684 00:48:51,000 --> 00:48:56,000 목록의 왼쪽 절반이며, 목록의 오른쪽 절반입니다. 곳 685 00:48:56,000 --> 00:49:03,000 우리는 시작과 끝 중 하나와 함께하는 작업을 수행 686 00:49:03,000 --> 00:49:07,000 또는 우리는 그들을 분, 최대 호출 할 수 있습니다. 687 00:49:07,000 --> 00:49:10,000 이 시간을 시작하고 종료 사용합니다. 688 00:49:10,000 --> 00:49:15,000 우리는 여기 예를 들어 되돌아 보니 우리가 시작하면, 경우, 689 00:49:15,000 --> 00:49:20,000 우리 사업의 시작은 자연으로 배열의 처음으로 설정되었습니다. 690 00:49:20,000 --> 00:49:25,000 어떤 색인이 였죠? 우리 무엇을해야 시작해야하나요? 691 00:49:25,000 --> 00:49:27,000 다니엘. 692 00:49:27,000 --> 00:49:30,000 [다니엘] 건초 더미 [0]. 693 00:49:30,000 --> 00:49:37,000 [네이트] 그래, 우리가 모래 사장과 동일을 설정할 수 있습니다 [0]. 694 00:49:37,000 --> 00:49:40,000 문제는,하지만이 우리에게 첫 번째 요소의 위치를​​하지 수 있다는 것입니다. 695 00:49:40,000 --> 00:49:45,000 그것은 우리에게 첫 번째 위치에서 첫 번째 요소 또는 실제 값의 색인을 제공합니다. 696 00:49:45,000 --> 00:49:47,000 [학생] 그 0.20로 변환합니까? 697 00:49:47,000 --> 00:49:52,000 [네이트]이게 할 것입니다 것은 - 잘되고, 그 어떤 변환을 수행하지 않습니다. 698 00:49:52,000 --> 00:49:56,000 그런 일이 할 것 것은 그 시작에 4를 저장 것입니다 699 00:49:56,000 --> 00:49:59,000 다음은 시작에 대한 비교하기 위해 최선을 될 것입니다 700 00:49:59,000 --> 00:50:03,000 시작은 4의 값을 개최되기 때문에 701 00:50:03,000 --> 00:50:06,000 이는 우리 배열의 시작입니다 702 00:50:06,000 --> 00:50:08,000 그러나 우리는 배열의 인덱스를 추적 할 703 00:50:08,000 --> 00:50:11,000 같은 값에 반대. 704 00:50:11,000 --> 00:50:17,000 우리는 실제로 그런 식으로, 0을 사용합니다. 705 00:50:17,000 --> 00:50:20,000 배열 샬롯의 끝을 보려면 조금 일찍 올려 가져 왔어. 706 00:50:20,000 --> 00:50:23,000 우리가 계정에 제로 색인을 생성 할게요 곳입니다. 707 00:50:23,000 --> 00:50:25,000 >> 샬롯, 배열의 마지막 뭐죠? 708 00:50:25,000 --> 00:50:28,000 끝의 색인은 무엇입니까? 709 00:50:28,000 --> 00:50:30,000 [샬롯] 크기 - 1. 710 00:50:30,000 --> 00:50:32,000 예, 우리는 어떤 크기를 사용해야합니까? 711 00:50:32,000 --> 00:50:35,000 우리는 자본의 크기 나 소문자 크기를 사용합니까? 712 00:50:35,000 --> 00:50:37,000 자본 크기입니다. 713 00:50:37,000 --> 00:50:42,000 이 경우, 우리는 자본 크기를 사용할 수 있습니다. 714 00:50:42,000 --> 00:50:45,000 우리는이 함수는 휴대용되고 싶어하는 경우 715 00:50:45,000 --> 00:50:48,000 그리고, 다른 프로그램에서이 기능을 사용 716 00:50:48,000 --> 00:50:50,000 우리는 실제로 소문자 크기를 사용할 수 있습니다. 717 00:50:50,000 --> 00:50:52,000 이거 너무 좋아요. 718 00:50:52,000 --> 00:51:01,000 1 -하지만 샬롯은 우리가 크기를하고자하는 완전히 권리입니다. 719 00:51:01,000 --> 00:51:03,000 에서이 시점 - 720 00:51:03,000 --> 00:51:05,000 [학생] 당신이 대문자 크기를 사용할 수있는 방법입니까? 721 00:51:05,000 --> 00:51:07,000 우리가 대문자 크기를 사용할 수 있다는 어떻습니까? 722 00:51:07,000 --> 00:51:13,000 그것은 이러한 # 정의는 것이 밝혀 것은 정말이며, 723 00:51:13,000 --> 00:51:19,000 그 말이 있으면 후드 아래, 같은 텍스트, 찾기 및 바꾸기. 724 00:51:19,000 --> 00:51:24,000 귀하의 코드를 컴파일 전처리 단계 725 00:51:24,000 --> 00:51:27,000 컴파일러의, 파일지나 726 00:51:27,000 --> 00:51:31,000 그리고, 사방 자본 크기를 작성한 찾습니다 727 00:51:31,000 --> 00:51:39,000 그리고 그냥 그렇게 8 문자 그대로 그 텍스트를 대체합니다. 728 00:51:39,000 --> 00:51:42,000 그런 의미에서이 변수에서 매우 다릅니다. 729 00:51:42,000 --> 00:51:45,000 이 메모리에서 공간을 차지하지 않습니다. 730 00:51:45,000 --> 00:51:52,000 이 간단한 텍스트 교체 속임수이다. 731 00:51:52,000 --> 00:51:57,000 이 경우, 우리는 크기를 사용하려고하고 있습니다. 732 00:51:57,000 --> 00:52:01,000 여기에서 우리는 반복 어떤 종류의를 어떻게 처리 할 건가 733 00:52:01,000 --> 00:52:03,000 우리는 우리의 DO-동안 루프와 함께 오른쪽 궤도에있어. 734 00:52:03,000 --> 00:52:08,000 상태가 더 이상 보유하지 않습니다 때까지 우리는 뭔가를하고 싶어요 735 00:52:08,000 --> 00:52:12,000 우리가 이전에 본대로, 우리는 보았다 그 조건 736 00:52:12,000 --> 00:52:19,000 우리가 끝을 원하지 않는 참이었습니다 737 00:52:19,000 --> 00:52:24,000 시작보다 작아야합니다. 738 00:52:24,000 --> 00:52:26,000 >> 이것은 우리의 정지 조건이다. 739 00:52:26,000 --> 00:52:35,000 이 경우, 우리는 같은 중지 선언하고 싶다 "이봐 요, 우리가 아무 것도 발견되지 않았습니다." 740 00:52:35,000 --> 00:52:43,000 이 표현하기 위해, 우리는 루프의 어떤 종류를 사용하고 싶습니다 않습니다. 741 00:52:43,000 --> 00:52:49,000 이 경우는, 루프,하는 동안 루프 DO-잠시 루프는? 742 00:52:49,000 --> 00:52:51,000 우리는 여기서 DO-동안 루프를 갖추고 있습니다. 743 00:52:51,000 --> 00:52:53,000 그 접근 방식 같은 사람 있습니까? 744 00:52:53,000 --> 00:52:59,000 당신은 우리가 다른 접근 방법을 시도해야한다고 생각하십니까? 745 00:52:59,000 --> 00:53:01,000 케빈, 어떤 생각? 746 00:53:01,000 --> 00:53:06,000 우리가 최대 알고 있기 때문에 우리는 잠시 루프를 가질 수 747 00:53:06,000 --> 00:53:11,000 시작 어쨌든의 분보다 더 큰 것입니다. 748 00:53:11,000 --> 00:53:14,000 네, 어떻게해야 더 초기화가 필요가 없습니다. 749 00:53:14,000 --> 00:53:17,000 당신이 뭔가를 초기화해야 할 때 이러한 수행 - 동안 루프가 아주 좋아요 750 00:53:17,000 --> 00:53:21,000 여기를 반면 테스트하기 전에 751 00:53:21,000 --> 00:53:26,000 우리는 모두 시작과 끝을 초기화 유지 할 수 없어 알 752 00:53:26,000 --> 00:53:28,000 루프의 매 라운드. 753 00:53:28,000 --> 00:53:32,000 우리는 우리가 그들을 초기화 할 알고, 그럼 우리의 상태를 확인합니다. 754 00:53:32,000 --> 00:53:38,000 이 경우, 사실은 간단한 동안 루프와 함께 갈거야. 755 00:53:38,000 --> 00:53:44,000 그것은 어떻게 - 동안 루프가 매우 자주 사용되는 밝혀졌다. 756 00:53:44,000 --> 00:53:49,000 장소의 많은도 않는 가르치지도 않는 루프 동안. 757 00:53:49,000 --> 00:53:53,000 그들은 사용자 입력을 처리하기위한 좋은거야, 자, 우리가 지금까지 그 많은 봤습니다. 758 00:53:53,000 --> 00:53:59,000 그러나 일반 및 루프가 훨씬 더 일반적인하는 동안. 759 00:53:59,000 --> 00:54:03,000 그것은이 조건이 같은 서면 것이 밝혀 760 00:54:03,000 --> 00:54:09,000 정말 우리에게 많은 좋은 일을하고, 왜 그래야하지 않습니다? 761 00:54:09,000 --> 00:54:11,000 미안 해요, 난 당신의 이름을 알고하지 않습니다. 762 00:54:11,000 --> 00:54:13,000 난 제리입니다. >> 죄송합니다? 763 00:54:13,000 --> 00:54:15,000 이 B-O-R-U-I입니다. 764 00:54:15,000 --> 00:54:18,000 아, 그래. 765 00:54:18,000 --> 00:54:23,000 내 목록에 표시되지 않습니다. 766 00:54:23,000 --> 00:54:26,000 아, 의미가 있기 때문에 - 아, 그건. 767 00:54:26,000 --> 00:54:31,000 당신은 의도로 동안 루프가 작동하지 않을 수 있습니다 이유에 대한 생각을해야하나요 768 00:54:31,000 --> 00:54:38,000 같은 상태로 작성된? 769 00:54:38,000 --> 00:54:43,000 당신은에 이후 모든 물건을 원하는 것 [제리]는 무슨 뜻 -? 770 00:54:43,000 --> 00:54:46,000 그래, 그 중 하나가 나였 어. 771 00:54:46,000 --> 00:54:49,000 우리는 완전히 사실 동안 루프로이 물건을 모두 넣어해야 할 수도 있습니다. 772 00:54:49,000 --> 00:54:55,000 좀 더 문제가되는 다른 문제는,하지만이 조건이 작동하지 않는 것입니다. 773 00:54:55,000 --> 00:54:57,000 [학생] 당신은 그것을 대칭해야합니다. 774 00:54:57,000 --> 00:55:04,000 오른쪽,이 조건은 이제까지 처음 우리가 얘기하는 방법 사실이 없습니다. 775 00:55:04,000 --> 00:55:08,000 끝 <이 시작 될 때까지 우리는 뭔가를하고 싶어요 776 00:55:08,000 --> 00:55:13,000 하지만 우리는 잠시 뭔가를하길 원한다 777 00:55:13,000 --> 00:55:21,000 ≤ 끝을 시작합니다. 778 00:55:21,000 --> 00:55:24,000 >> 논리의 반전이있다. 779 00:55:24,000 --> 00:55:27,000 난 그 실수 모든 시간을 만드는 죄를 저질렀 어. 780 00:55:27,000 --> 00:55:31,000 [학생] 왜보다 작거나 같아야해야합니까? 781 00:55:31,000 --> 00:55:33,000 우리가 가지고있는 경우 당신을 기억 않기 때문에 782 00:55:33,000 --> 00:55:36,000 어디가 하나의 요소는이었고, 우리는 하락했다 783 00:55:36,000 --> 00:55:43,000 우리는 우리의 배열의 단지 15 봤나? 784 00:55:43,000 --> 00:55:47,000 그리고 우리의 시작과 끝은 같은 요소습니다. 785 00:55:47,000 --> 00:55:50,000 우리는 그 사건을 처리하도록해야 할. 786 00:55:50,000 --> 00:55:54,000 우리는보다 직선 적은 짓을했다면, 787 00:55:54,000 --> 00:55:58,000 우리는 2 요소 배열로 내려받을 수 있습니다 것입니다. 788 00:55:58,000 --> 00:56:06,000 일단 우리는 우리의 요소라면, 우리는 그것을 찾을 수 없었어요, 그 마지막 요소에 도착. 789 00:56:06,000 --> 00:56:10,000 당신이 말한 것 같은 지금 여기, 우리는 정확히 할 수 있습니다. 790 00:56:10,000 --> 00:56:15,000 우리는 바로 우리 동안 루프의 중간에 물건을 plopping 시작할 수 있습니다. 791 00:56:15,000 --> 00:56:20,000 우리는 우리의 중간 지점에 털썩 수 있습니다. 792 00:56:20,000 --> 00:56:24,000 문 경우 우리는이 모든 걸릴 수 있습니다 793 00:56:24,000 --> 00:56:30,000 을이 몰라 동안 루프 끌어 794 00:56:30,000 --> 00:56:34,000 에 털썩 그들을 795 00:56:34,000 --> 00:56:39,000 , 약간 그런 짓을 청소 796 00:56:39,000 --> 00:56:48,000 내가 가서이 수정을 저장합니다. 797 00:56:48,000 --> 00:56:53,000 그리고이 시점에서, 우리는 아주 가까이 접근하고 있습니다. 798 00:56:53,000 --> 00:56:55,000 샘. 799 00:56:55,000 --> 00:56:58,000 2분의 1 - 나는 당신이 또한 INT 중간 지점주세요 = 크기가 같아요. 800 00:56:58,000 --> 00:57:01,000 2분의 1 - 그게, 크기, 알았어. 801 00:57:01,000 --> 00:57:05,000 우리가 라인에 대해 변경해야 할 게 있나요? 802 00:57:05,000 --> 00:57:10,000 그건 좋은 지적했다. 803 00:57:10,000 --> 00:57:14,000 >> 크기는 무엇입니까? 우리는 어느 크기를 변경 있습니까? 804 00:57:14,000 --> 00:57:17,000 같은 라인을 유지하기 위해, 우리는 크기를 변경해야합니다. 805 00:57:17,000 --> 00:57:21,000 우리는 크기에게 우리가 루프의 주위에 갈 때마다 변경해야합니다. 806 00:57:21,000 --> 00:57:25,000 그러나 우리가 조금 일찍 예제를 겪고 때 기억 807 00:57:25,000 --> 00:57:30,000 우리는 4시에 시작했다 808 00:57:30,000 --> 00:57:33,000 그리고 마지막 108에서 각국 방법? 809 00:57:33,000 --> 00:57:35,000 우리가 어떻게 중간 지점을 계산 했죠? 810 00:57:35,000 --> 00:57:38,000 우리는 크기를 사용습니까? 811 00:57:38,000 --> 00:57:40,000 아니면 우리가 시작하는 대신 종료를 사용 했지? 812 00:57:40,000 --> 00:57:42,000 그것은 끝과 시작의 차이입니다. 813 00:57:42,000 --> 00:57:50,000 정확히 얼마나 정확히 나는 샬롯을 그 말을 새겨해야하나요? 814 00:57:50,000 --> 00:57:52,000 제발 끝내 - 시작합니다. 815 00:57:52,000 --> 00:57:55,000 1 - 당신은 작업을 수행 할 필요가 없습니다 것입니다 816 00:57:55,000 --> 00:57:58,000 1 월말에 포함되어 있으며 이미 시작되었습니다 -이 때문입니다. 817 00:57:58,000 --> 00:58:00,000 [네이트] 좋아, 당신은 완전히 맞아. 818 00:58:00,000 --> 00:58:03,000 그 때문에 1 - - 1이 포함 된 우리는 할 필요가 없습니다 819 00:58:03,000 --> 00:58:08,000 우리가 최종 변수를 초기화 할 때를 차지했다. 820 00:58:08,000 --> 00:58:11,000 >> 내가이 줄은 이해 할 구문해야 할 게 있나요? 821 00:58:11,000 --> 00:58:13,000 [학생] 플러스. >>를 시작 플러스 시작? 822 00:58:13,000 --> 00:58:15,000 끝에서 학생]. 823 00:58:15,000 --> 00:58:20,000 그는 절반 길이를 계산 때문입니다. 824 00:58:20,000 --> 00:58:26,000 당신은 시작를 추가해야합니다. 825 00:58:26,000 --> 00:58:31,000 [네이트]이 우리를 위해 무엇을 계산까요? 826 00:58:31,000 --> 00:58:35,000 우리는 루프의 첫 반복에 말에 대해 생각한다면, 827 00:58:35,000 --> 00:58:40,000 끝 위치 지수 7가 될 것입니다. 828 00:58:40,000 --> 00:58:43,000 시작이 위치 0에 있습니다. 829 00:58:43,000 --> 00:58:47,000 명심 해, 우리가 어느 찾고 830 00:58:47,000 --> 00:58:52,000 위치 3 위치 4. 831 00:58:52,000 --> 00:58:56,000 우리가이 수학을 보면, 그냥 좀 더 확실한 만드는 832 00:58:56,000 --> 00:59:02,000 여기 숫자를 넣어, 우리는, 7, 0이 833 00:59:02,000 --> 00:59:10,000 그래서 7-0 후 / 2 834 00:59:10,000 --> 00:59:19,000 정수 나누기에 3 그입니다. 835 00:59:19,000 --> 00:59:26,000 그럼 우리는 우리의 시작 다시 추가해야하나요? 836 00:59:26,000 --> 00:59:28,000 이 경우에는하지 않습니다. 837 00:59:28,000 --> 00:59:31,000 시작은 0이기 때문에 최초의 반복에, 괜찮을 것입니다. 838 00:59:31,000 --> 00:59:36,000 하지만 진행으로, 우리는 필요한 모든 정말 할 839 00:59:36,000 --> 00:59:42,000 끝 - 시작 / 2. 840 00:59:42,000 --> 00:59:46,000 가 다른 트릭은 여기, 그리고 그 즉 우선 순위 중 하나입니다. 841 00:59:46,000 --> 00:59:49,000 [학생] 우리는 괄호를해야하나요? 842 00:59:49,000 --> 00:59:53,000 [네이트] 맞아요, 우리는 이러한 괄호를 넣어하지 않은 경우 때문이다, 843 00:59:53,000 --> 00:59:58,000 다음이 줄은 대신 해석 될 것이다 844 00:59:58,000 --> 01:00:09,000 (끝) 등 - (시작 / 2), 우리는 확실히 원하지 않는된다. 845 01:00:09,000 --> 01:00:11,000 이러한 우선 순위 규칙을 좀 봐주세요. 846 01:00:11,000 --> 01:00:15,000 [학생] 왜 종료되지 않습니다 + 시작? 847 01:00:15,000 --> 01:00:17,000 왜 종료되지 않습니다 + 시작? 848 01:00:17,000 --> 01:00:19,000 [학생] 왜 않나요? 849 01:00:19,000 --> 01:00:24,000 왜 +겠습니까? 850 01:00:24,000 --> 01:00:26,000 당신이 옳은 것 같아요. 851 01:00:26,000 --> 01:00:28,000 [학생]는 평균이기 때문에? 852 01:00:28,000 --> 01:00:31,000 [네이트] 최종 + 시작, 당신은 완전히 맞아. 853 01:00:31,000 --> 01:00:34,000 와우, 난 정말 쳤어. 당신이 옳아 요. 854 01:00:34,000 --> 01:00:39,000 우리가 마이너스을하고 있다면, 우리는 뼈를 다시 시작을 추가 할 것 855 01:00:39,000 --> 01:00:43,000 이 경우, 우리가 두의 평균을 가져올 매우 맞아요 856 01:00:43,000 --> 01:00:45,000 그래, 저들을 낮출 반대로를 추가 할 않습니다. 857 01:00:45,000 --> 01:00:49,000 [학생]는 당신이 끝을 한 경우 또한 일 것이다 - 시작 / 2 + 시작합니다. 858 01:00:49,000 --> 01:00:55,000 우리가 할 - 난 그렇게 믿을 겠지. 859 01:00:55,000 --> 01:01:00,000 >> 예를 들어, 우리가 시작을 찾고 있던 경우, 860 01:01:00,000 --> 01:01:04,000 우리는 여기로 이동 861 01:01:04,000 --> 01:01:08,000 15. 862 01:01:08,000 --> 01:01:12,000 지금 시작은 2 순위에 있습니다. 863 01:01:12,000 --> 01:01:15,000 최종 위치 7에 있습니다. 864 01:01:15,000 --> 01:01:21,000 우리가 그것들을 뺍 경우 5를. 865 01:01:21,000 --> 01:01:24,000 2로 그렇게 나누어, 우리는이를. 866 01:01:24,000 --> 01:01:27,000 그리고 우리는 2에서 다시 추가 867 01:01:27,000 --> 01:01:30,000 그는 4 위치에 우리를 얻을 868 01:01:30,000 --> 01:01:33,000 바로 여기입니다되는데,이 중간입니다. 869 01:01:33,000 --> 01:01:36,000 [학생] 우리는 포장 처리해야하나요? 870 01:01:36,000 --> 01:01:39,000 어떤 의미에서 우리는 포장 처리해야하나요? 871 01:01:39,000 --> 01:01:43,000 만약 금액을 차이 872 01:01:43,000 --> 01:01:45,000 우리가이 일을하는 방법에 따라도 숫자가 아닙니다. 873 01:01:45,000 --> 01:01:49,000 그런 다음 컴퓨터가 2.5 때인지 혼동됩니다; 874 01:01:49,000 --> 01:01:52,000 당신은 왼쪽이나 중간 지점 인 결정하기 위해 오른쪽으로 이동하려면 어떻게해야합니까? 875 01:01:52,000 --> 01:01:54,000 알았어요. 876 01:01:54,000 --> 01:01:56,000 그것은, 그 정수 나누기로 밝혀 877 01:01:56,000 --> 01:01:59,000 우리는 이런 부동 소수점을받지 않습니다. 878 01:01:59,000 --> 01:02:01,000 우리는 소수를 이해 못해. 879 01:02:01,000 --> 01:02:04,000 그것은 완전히 삭제있어. 880 01:02:04,000 --> 01:02:08,000 당신은 컴퓨터가 두 개의 정수 변수를 나누어있는 경우 881 01:02:08,000 --> 01:02:11,000 그리고, 하나는 7이며, 다른 하나는 2 882 01:02:11,000 --> 01:02:13,000 당신은 결과로 3.5를 얻을 수 없습니다. 883 01:02:13,000 --> 01:02:16,000 호텔은 3을 받게됩니다. 884 01:02:16,000 --> 01:02:19,000 나머지는 폐기 될 것입니다, 그래서 효과적으로입니다 반올림 - 885 01:02:19,000 --> 01:02:24,000 너희들은 수학에 해당 대해 잘 알고있는 경우가 아닌 원형 아니라 바닥, 886 01:02:24,000 --> 01:02:27,000 어디서 완전히 소수점을 버리고 887 01:02:27,000 --> 01:02:31,000 그래서 당신은 기본적으로 가장 가까운에 내려 버리는거야 888 01:02:31,000 --> 01:02:33,000 가장 가까운 정수로 전체 위치. 889 01:02:33,000 --> 01:02:38,000 [학생]이 (가) 당신이 7 요소의 배열이있는 경우 때문에 그런데 그건 문제입니다 890 01:02:38,000 --> 01:02:43,000 해당이 자동으로 대신 4의 중간 지점의 3 요소를 해결합니다. 891 01:02:43,000 --> 01:02:46,000 우리가 어떻게 그 처리합니까? 892 01:02:46,000 --> 01:02:49,000 그것은 문제가있어, 왜냐면 우리는 7의 배열이 있다면, 893 01:02:49,000 --> 01:02:54,000 그 대신 4의 3을 선택합니다. 894 01:02:54,000 --> 01:02:56,000 당신은 좀 더 설명해 주 시겠어요? 895 01:02:56,000 --> 01:02:59,000 [학생] 너 때문에 그 다음 4 요소를 칠 요소가있는 경우 896 01:02:59,000 --> 01:03:04,000 오른쪽 중간 것입니까? 897 01:03:04,000 --> 01:03:07,000 하지만 인덱스 0이에 대해 코멘트를 기억하십시오. 898 01:03:07,000 --> 01:03:10,000 [학생] 그래, 위치 3인치 그 중간이 될 것입니다. 899 01:03:10,000 --> 01:03:12,000 그래. 900 01:03:12,000 --> 01:03:16,000 아, 그래. 난 당신이 무슨 뜻인지 참조하십시오. 901 01:03:16,000 --> 01:03:19,000 우리가이 전체 개념에 익숙해 등 이상 이네요 902 01:03:19,000 --> 01:03:22,000 소수점을 잊어 버리기. 903 01:03:22,000 --> 01:03:26,000 그건 좋은 점입니다. 904 01:03:26,000 --> 01:03:30,000 가이 일을 마저 보자. 905 01:03:30,000 --> 01:03:32,000 우리는 우리의 중간 지점 계산했습니다. 906 01:03:32,000 --> 01:03:37,000 >> 우리는 바늘의 중간 값과 동일 있는지 확인하기 위해 테스트하고 있습니다. 907 01:03:37,000 --> 01:03:41,000 우리는 우리가 그것을 발견 프린트하고 있지만, 정말, 우리는이 상황에서 어떻게할까요? 908 01:03:41,000 --> 01:03:46,000 우리가 발견 한, 우리는 호출자가 우리가 발견되었음을 알려 싶습니다. 909 01:03:46,000 --> 01:03:49,000 우리는 부울 입력 된 기능이에요 함수있어. 910 01:03:49,000 --> 01:03:54,000 우리가 갈 준비하는 우리의 기능의 호출자에게 신호하는 방법 911 01:03:54,000 --> 01:03:58,000 우리는 "야,이 사실입니다."라고되어 있습니다 912 01:03:58,000 --> 01:04:00,000 우리가 어떻게, 케빈 그 짓을 할 수 있나? 913 01:04:00,000 --> 01:04:02,000 당신은 머리를 끄덕하고 있습니다. >> [케빈] 추가 반환 사실. 914 01:04:02,000 --> 01:04:06,000 [네이트] 정확히 사실 반환합니다. 915 01:04:06,000 --> 01:04:12,000 이제 같이 아니라면, 어떻게 우리는 왼쪽 이분의 일 이것 봐라? 916 01:04:12,000 --> 01:04:16,000 어떤 아이디어? 917 01:04:16,000 --> 01:04:18,000 스텔라, 좋은 아이디어 없어? 918 01:04:18,000 --> 01:04:21,000 당신은 끝을위한 새로운 위치를 설정해야합니다. 919 01:04:21,000 --> 01:04:23,000 그래. 920 01:04:23,000 --> 01:04:29,000 끝 - 그래서 우리는 중간 지점의 위치를​​해야합니다. 921 01:04:29,000 --> 01:04:33,000 좋아요. 922 01:04:33,000 --> 01:04:36,000 우리는 마지막에 새로운 위치를 설정해야 923 01:04:36,000 --> 01:04:38,000 왼쪽 이분의 일 볼 수 있습니다. 924 01:04:38,000 --> 01:04:41,000 이것은 우리가 어디에서 전에 얘기 한 것에 대해이었습니다 925 01:04:41,000 --> 01:04:44,000 이 예제로 계속. 926 01:04:44,000 --> 01:04:50,000 나는 여기 시작했습니다 그리고 난 끝이 여기있는 모든 방법을 제공합니다. 927 01:04:50,000 --> 01:04:53,000 >> 우리가 15을 찾는다면 다시, 우리의 중간 지점은 16시입니다 928 01:04:53,000 --> 01:04:56,000 우리는 죄송합니다, 16 크다 "알고 있습니다. 929 01:04:56,000 --> 01:04:59,000 우리는 왼쪽 절반으로 이동하고 싶습니다. " 930 01:04:59,000 --> 01:05:02,000 우리는 다음 15의 끝을 이동 것 931 01:05:02,000 --> 01:05:06,000 우리는 중간 지점에서 하나를 데리고가 그런 짓을 932 01:05:06,000 --> 01:05:09,000 우리의 새 끝으로 그 설정합니다. 933 01:05:09,000 --> 01:05:12,000 우리가 오른쪽 절반보고 싶다면 마찬가지로, 그 방법을 우리 하죠? 934 01:05:12,000 --> 01:05:14,000 당신은 아이디어가 있습니까? 935 01:05:14,000 --> 01:05:22,000 [학생] 당신은 + 1 중간 점을 시작으로 설정합니다. 936 01:05:22,000 --> 01:05:24,000 [네이트] 좋아요. 937 01:05:24,000 --> 01:05:29,000 그리고 지금은 경우에 우리는 아무것도 발견하지 않는 것이 938 01:05:29,000 --> 01:05:32,000 그건 우리에게의 담당을합니까? 939 01:05:32,000 --> 01:05:36,000 다니엘은 우리에게의 처리됩니까? 940 01:05:36,000 --> 01:05:38,000 [다니엘] 번호 941 01:05:38,000 --> 01:05:40,000 [네이트] 우리는 전체 배열을 통과하고 우리가 아무것도 찾을 수없는 경우, 942 01:05:40,000 --> 01:05:42,000 곳을 처리 할 것이다, 또는 우리가 알아서해야하나요? 943 01:05:42,000 --> 01:05:44,000 [다니엘] 동안 조건. 944 01:05:44,000 --> 01:05:48,000 [네이트] 네, 동안 조건, 맞아요. 945 01:05:48,000 --> 01:05:51,000 우리가 아무것도 발견하지 않은 경우는 전체 배열 통과 처리됩니다. 946 01:05:51,000 --> 01:05:53,000 이 동안 루프가 종료됩니다. 947 01:05:53,000 --> 01:05:56,000 우리는이 조건을 발생하지 않았을 것입니다 948 01:05:56,000 --> 01:06:03,000 우리는 False를 반환 할 수 있습니다. 949 01:06:03,000 --> 01:06:10,000 우리는 또한 다음과 같이 여기에이 경우 남길 수 있습니다 950 01:06:10,000 --> 01:06:14,000 이 문장은 사실 경우에 때문에, 951 01:06:14,000 --> 01:06:16,000 우리의 기능은, 반환 952 01:06:16,000 --> 01:06:21,000 그래서 우리는이 시점에서 중단이 기능이 기본적으로드립니다 953 01:06:21,000 --> 01:06:24,000 우리는 TRUE를 반환합니다. 954 01:06:24,000 --> 01:06:28,000 그런데이 구조와 여기에 어떻게됩니까? 955 01:06:28,000 --> 01:06:34,000 이 완전히 작동, 또는 거기에 어떤 논리적 결함이됩니까? 956 01:06:34,000 --> 01:06:37,000 >> 거기에 어떤 논리적 결함이 설정되어있는 방법이 있습니다. 957 01:06:37,000 --> 01:06:40,000 그것은 무엇을 할 수 있을까요? 958 01:06:40,000 --> 01:06:43,000 [학생] 당신은 왜 필요한가요 -와 + 1 초? 959 01:06:43,000 --> 01:06:47,000 그래서 우리의 새로운 왼쪽 반 오른쪽 절반으로 우리의 배열을 설정합니다. 960 01:06:47,000 --> 01:06:51,000 [학생]하지만 이유가없이 할 수 없습니다 - 1S와 + 1 초? 961 01:06:51,000 --> 01:06:53,000 [네이트] 우리는 중간 지점에 동등한를 설정할 수 있습니다? 962 01:06:53,000 --> 01:07:04,000 어떻게 그것에 대해 문제가있을 수 있을까요? 963 01:07:04,000 --> 01:07:08,000 [학생] 난 당신이 이미 선택 된 값을 확인 때문이 비효율적 인 것 같아요. 964 01:07:08,000 --> 01:07:11,000 [네이트] 정확히 그래, 그러니 샘 완전히 권리입니다. 965 01:07:11,000 --> 01:07:15,000 당신은 끝을 설정하고이 중간 지점에 동등한 시작하면 966 01:07:15,000 --> 01:07:18,000 대신 - 1 reflectively + 1, 967 01:07:18,000 --> 01:07:22,000 미래의 어떤 시점에서 우리는 다시 중간 지점을 확인하게 될 겁니다. 968 01:07:22,000 --> 01:07:26,000 [학생] 내가 내가 그런 일을 저질렀다 다음 pset를 시작하고, 969 01:07:26,000 --> 01:07:30,000 어디 + 1을 깜빡하고, 그 무한 루프에 갇혀 있어요. 970 01:07:30,000 --> 01:07:34,000 네, 어떤 점에서 때문에 시작과 끝받을 수 없다는 971 01:07:34,000 --> 01:07:39,000 실제로 겹쳐합니다. 972 01:07:39,000 --> 01:07:41,000 좋아. 973 01:07:41,000 --> 01:07:44,000 가 하나 더 논리적 결함, 그리고이 확실히 있어야합니다 974 01:07:44,000 --> 01:07:48,000 다른 경우. 975 01:07:48,000 --> 01:07:55,000 왜있을 수 있을까요? 976 01:07:55,000 --> 01:07:59,000 >> - 않은 경우에는 당신이 케빈을 볼이 다른이 아니라면 그 이유는? 977 01:07:59,000 --> 01:08:02,000 [케빈] 그래요, 당신이 끝 지점을 변경하는 때문입니다. 978 01:08:02,000 --> 01:08:05,000 [네이트] 그렇지. 979 01:08:05,000 --> 01:08:07,000 우리는 종점을 변경하고 980 01:08:07,000 --> 01:08:12,000 그리고이 - 우린 같은 기록되는 경우는 사이 - 공간을 981 01:08:12,000 --> 01:08:14,000 는이 사건을 검사합니다. 982 01:08:14,000 --> 01:08:18,000 이 성공한다면이 사건은, 함수의 중단을 것이다. 983 01:08:18,000 --> 01:08:21,000 그런 다음, 다음 사건을 검사합니다 984 01:08:21,000 --> 01:08:24,000 이 성공한다면, 그것은 끝점을 조정합니다 985 01:08:24,000 --> 01:08:28,000 다음은 계속 진행하여이 사건을 검사합니다. 986 01:08:28,000 --> 01:08:31,000 그러나이 시점에서, 우리는 검사 계속 싶지 않아. 987 01:08:31,000 --> 01:08:35,000 다행히, 우리는 여기에 중간 지점을 다시 설정하지 않은 988 01:08:35,000 --> 01:08:39,000 우리는이 사건이 성공하지 않습니다 알아요. 989 01:08:39,000 --> 01:08:44,000 하지만 우리는 확실히 다른를 표시 할 것인지 거기에 경우 990 01:08:44,000 --> 01:08:48,000 심지어 그 수도 -이 경우 991 01:08:48,000 --> 01:08:52,000 우리는 중간 지점을 조정하지 때문에, 그 차이를 느끼게 되죠? 992 01:08:52,000 --> 01:08:54,000 아니, 있기 때문에 이런 경우는 배타적입니다. 993 01:08:54,000 --> 01:08:58,000 다시 말하지만, 미안하게됐다. 994 01:08:58,000 --> 01:09:01,000 우리는, 내 생각이 다른이 경우에는 필요하지 않습니다. 995 01:09:01,000 --> 01:09:05,000 우리는 그것을 시도하고 실행하고 어떻게 볼을 제공 할 수 있습니다. 996 01:09:05,000 --> 01:09:08,000 건물 오류가 발생했습니다. 997 01:09:08,000 --> 01:09:12,000 여기에서 이러한 침대, 전자의를 떠난 때문에 때문일 수 있습니다. 998 01:09:12,000 --> 01:09:14,000 나는 상단에있는 최대 더 이상이 있습니까? 999 01:09:14,000 --> 01:09:16,000 그렇게 보이지 않습니다. 1000 01:09:16,000 --> 01:09:20,000 우리는 축소 구축 1001 01:09:20,000 --> 01:09:24,000 거기에가는, 그래서 지금 우리는 15를 검색하는 경우 1002 01:09:24,000 --> 01:09:28,000 예. 1003 01:09:28,000 --> 01:09:30,000 나 확대하자 1004 01:09:30,000 --> 01:09:33,000 15 네. 우리는 다시 실행할 수 있습니다. 1005 01:09:33,000 --> 01:09:36,000 , 소스 코드를 업로드 구축 실행할 수 있습니다. 1006 01:09:36,000 --> 01:09:41,000 우리는 13 살 무언가를 검색 할 수 있습니다 1007 01:09:41,000 --> 01:09:45,000 우리는 출력 무슨 일이 있으므로 된게 아니 못 우리 그. 1008 01:09:45,000 --> 01:09:51,000 이 목록에없는이기 때문에 즉, 잘 됐네. 1009 01:09:51,000 --> 01:09:53,000 >> 우리는 시간이 지금입니다. 1010 01:09:53,000 --> 01:09:55,000 그게 이번 주를 위해거야. 1011 01:09:55,000 --> 01:10:00,000 가입하고 나중에 참조 주셔서 감사합니다. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]