1 00:00:00,000 --> 00:00:00,488 2 00:00:00,488 --> 00:00:10,800 >> [음악 연주] 3 00:00:10,800 --> 00:00:13,500 DAVID 마란 : 좋아요. 4 00:00:13,500 --> 00:00:14,670 좋아, 다시 오신 것을 환영합니다. 5 00:00:14,670 --> 00:00:18,120 그래서 이것은, 처음 4 주입니다 그 이미. 6 00:00:18,120 --> 00:00:21,320 그리고 당신이 지난 주 기억 할 것이다, 우리는 둘 조금만 위해 따로 코드 7 00:00:21,320 --> 00:00:24,240 우리는 좀 더 얘기를 시작했다 같은 높은 수준에 대한 것들 8 00:00:24,240 --> 00:00:28,130 어느 있지만, 검색 및 정렬 약간 간단한 아이디어가있다 9 00:00:28,130 --> 00:00:31,840 문제의 클래스 대표 당신은 특히 해결하기 위해 시작합니다 10 00:00:31,840 --> 00:00:34,820 당신은 마지막에 대해 생각을 시작으로 프로젝트와 흥미로운 솔루션을 당신 11 00:00:34,820 --> 00:00:36,760 실제 문제가있을 수 있습니다. 12 00:00:36,760 --> 00:00:39,490 이제 버블 정렬은 가장 간단한 중 하나 이러한 알고리즘, 그리고 13 00:00:39,490 --> 00:00:42,900 이 작은 숫자를함으로써 일 목록 또는 배열의 종류에 14 00:00:42,900 --> 00:00:46,530 정상까지 거품 그들의 방법을하고, 큰 숫자는 그들의 방법을 아래로 이동 15 00:00:46,530 --> 00:00:47,930 이 목록의 끝. 16 00:00:47,930 --> 00:00:50,650 >> 그리고 우리는 시각화 할 수있는 기억 버블 정렬 작은 17 00:00:50,650 --> 00:00:52,310 이런 식으로 뭔가. 18 00:00:52,310 --> 00:00:53,640 그래서 내가 가서 시작을 클릭하자. 19 00:00:53,640 --> 00:00:55,350 나는 버블 정렬을 미리 선택했다. 20 00:00:55,350 --> 00:00:58,920 그리고 당신이 기억하는 경우 그 키가 파란색 선 작은, 큰 숫자를 나타냅니다 21 00:00:58,920 --> 00:01:03,300 파란색 선은 작은 숫자를 나타냅니다 우리는 또 다시 통과하고 22 00:01:03,300 --> 00:01:07,680 또, 각각 다음 두 줄을 비교 빨간색 다른, 우리는을 교환 할거야 23 00:01:07,680 --> 00:01:11,010 가장 큰 경우 작은 그들은 순서가. 24 00:01:11,010 --> 00:01:14,150 >> 이에 가서에 가서 갈 것이다 그래서 에, 당신은 그 큰 볼 수 있습니다 25 00:01:14,150 --> 00:01:16,700 요소에 그들의 방법을하고 있습니다 오른쪽, 그리고 작은 요소는 26 00:01:16,700 --> 00:01:17,900 왼쪽에 그들의 방법을 만드는. 27 00:01:17,900 --> 00:01:21,380 그러나 우리는 정량화하기 시작했다 효율성, 28 00:01:21,380 --> 00:01:22,970 이 알고리즘의 질. 29 00:01:22,970 --> 00:01:25,200 그리고 우리는 말했다 최악의 경우,이 알고리즘했다 30 00:01:25,200 --> 00:01:27,940 대략 몇 단계? 31 00:01:27,940 --> 00:01:28,980 >> 그래서 N 제곱. 32 00:01:28,980 --> 00:01:30,402 n은 무엇 이었습니까? 33 00:01:30,402 --> 00:01:31,650 >> 대상 : 요소의 수. 34 00:01:31,650 --> 00:01:32,790 >> DAVID 마란 : 그래서 n은이었다 요소 수. 35 00:01:32,790 --> 00:01:33,730 그래서 우리는 종종이 작업을 수행 할 수 있습니다. 36 00:01:33,730 --> 00:01:36,650 우리는 크기에 대해 이야기 할 때마다 문제 또는 크기의 37 00:01:36,650 --> 00:01:39,140 입력하거나 걸리는 시간 출력을 생성하기 위해, 우리는 단지 거 38 00:01:39,140 --> 00:01:41,610 일반화의 어떤 입력은 N 같습니다. 39 00:01:41,610 --> 00:01:45,970 그래서 다시 주 0에서 수 페이지 전화 번호부에 N이었다. 40 00:01:45,970 --> 00:01:47,550 학생 수 방에 n을했다. 41 00:01:47,550 --> 00:01:49,630 그래서 여기, 너무, 우리는 다음과 같은거야 해당 패턴. 42 00:01:49,630 --> 00:01:52,800 >> 이제 N 제곱 특히 아니다 빠른, 그래서 우리는 더 잘하려고 노력했다. 43 00:01:52,800 --> 00:01:55,970 그래서 우리는 몇 보았다 다른 알고리즘, 그중 44 00:01:55,970 --> 00:01:57,690 선택 정렬되었습니다. 45 00:01:57,690 --> 00:01:59,180 했다 선택 정렬 그래서 조금 다른. 46 00:01:59,180 --> 00:02:03,130 거의 간단했다, 내가 감히, 나는의 시작에서 시작 약자 47 00:02:03,130 --> 00:02:06,740 자원 봉사자의 목록 I 그냥 다시 다시하고 다시는 관통 48 00:02:06,740 --> 00:02:10,060 작은을 뽑는 목록 시간 요소 또는 그 퍼팅 49 00:02:10,060 --> 00:02:13,040 그녀의 목록의 시작 부분에. 50 00:02:13,040 --> 00:02:16,410 >> 하지만이 역시 일단 우리가 생각하기 시작 수학 및 큰을 통해 51 00:02:16,410 --> 00:02:19,860 그림은 몇 번이나 생각 나는 앞으로 다시 되돌아 가게되었다 52 00:02:19,860 --> 00:02:24,090 앞뒤로, 우리는 최악의 경우라고 선택 정렬도 무엇인가? 53 00:02:24,090 --> 00:02:24,960 N 제곱. 54 00:02:24,960 --> 00:02:27,490 이제 현실 세계에서, 그것은 수도 실제로 소폭 빠르게합니다. 55 00:02:27,490 --> 00:02:30,620 다시 있기 때문에, 계속해야하지 않았다 내가 분류 한 번 되돌아 56 00:02:30,620 --> 00:02:31,880 작은 요소입니다. 57 00:02:31,880 --> 00:02:35,090 그러나 우리는 매우 큰 N에 대해 생각하고 있다면 당신은 일종의 수학 등을 할 경우 58 00:02:35,090 --> 00:02:39,170 나는 N 제곱으로, 보드에 한 마이너스 뭔가 다른 모든 59 00:02:39,170 --> 00:02:41,850 N 제곱, N이 외에 정말 큰 가져온하지 않습니다 60 00:02:41,850 --> 00:02:42,850 정말 많은 문제. 61 00:02:42,850 --> 00:02:45,470 그래서 컴퓨터 과학자로, 우리는 일종의 작은에 외면 62 00:02:45,470 --> 00:02:49,220 요소 만 요인에 초점 만드는 것 표현 63 00:02:49,220 --> 00:02:50,330 가장 큰 차이. 64 00:02:50,330 --> 00:02:52,840 >> 음, 마지막으로, 우리는 보았다 삽입 정렬에서. 65 00:02:52,840 --> 00:02:56,620 그리고이 정신 유사했지만, 반복을 통해 이동보다는 66 00:02:56,620 --> 00:03:01,250 에서 작은 요소 하나를 선택 시간은 내가 대신 손을 잡고하는 I 67 00:03:01,250 --> 00:03:04,070 모두, 처리, 나는 결정했다 좋아, 여기에 속한다. 68 00:03:04,070 --> 00:03:06,160 그럼 난 다음 요소에 이동 하고 결정하는 그 또는 69 00:03:06,160 --> 00:03:07,470 그녀는 여기에 지배했습니다. 70 00:03:07,470 --> 00:03:08,810 그리고 난과에 옮겼습니다. 71 00:03:08,810 --> 00:03:11,780 그리고, 길을 따라, 할 수도 없습니다 하기 위해서는 이러한 사람들을 이동 72 00:03:11,780 --> 00:03:13,030 그들을위한 공간을 만듭니다. 73 00:03:13,030 --> 00:03:16,880 그래서 그 정신 반전의 종류이었다 선택 정렬의 우리 74 00:03:16,880 --> 00:03:18,630 삽입 정렬을했다. 75 00:03:18,630 --> 00:03:20,810 >> 그래서 발생하는 이러한 주제 현실 세계합니다. 76 00:03:20,810 --> 00:03:23,640 몇 년 전, 때 특정 상원 의원은 대통령에 출마했다 77 00:03:23,640 --> 00:03:27,160 에릭 슈미트 (Eric Sc​​hmidt),시 CEO 구글은 실제로 기회를 가졌습니다 78 00:03:27,160 --> 00:03:28,040 그를 인터뷰. 79 00:03:28,040 --> 00:03:32,010 그리고 우리는 우리가이 유튜브를 공유하는 줄 알았는데 우리가 좋아질 수 있다면, 여기 당신을 위해 클립 80 00:03:32,010 --> 00:03:32,950 볼륨입니다. 81 00:03:32,950 --> 00:03:39,360 >> [동영상 재생] 82 00:03:39,360 --> 00:03:44,620 >> - 이제, 상원 의원, 당신은 구글에서 여기 나는 대통령의 생각처럼 83 00:03:44,620 --> 00:03:46,042 면접 등. 84 00:03:46,042 --> 00:03:47,770 >> [웃음] 85 00:03:47,770 --> 00:03:50,800 >> - 지금은 구하기 힘든 거지 대통령으로 작업. 86 00:03:50,800 --> 00:03:52,480 그리고 당신은을거야 지금은 엄격. 87 00:03:52,480 --> 00:03:54,330 그것은 구글에서 일을하는 것도 어렵다. 88 00:03:54,330 --> 00:03:59,610 우리는 질문을 가지고 있고 우리는 질문 우리의 후보 질문. 89 00:03:59,610 --> 00:04:02,250 이 사람은 래리 쉬머에서이다. 90 00:04:02,250 --> 00:04:05,325 >> [웃음] 91 00:04:05,325 --> 00:04:06,400 - 너희들은 내가 농담하는 것 같아? 92 00:04:06,400 --> 00:04:08,750 바로 여기이다. 93 00:04:08,750 --> 00:04:12,110 가장 효율적인 방법은 무엇입니까 만 두 비트 정수를 정렬? 94 00:04:12,110 --> 00:04:15,810 >> [웃음] 95 00:04:15,810 --> 00:04:18,260 >> - 글쎄, 어 - 96 00:04:18,260 --> 00:04:19,029 >> - 미안 해요. 97 00:04:19,029 --> 00:04:19,745 어쩌면 우리가해야 - 98 00:04:19,745 --> 00:04:21,000 >> - 아니, 아니, 아니, 아니, 아니. 99 00:04:21,000 --> 00:04:21,470 >> - 그게 아니라 - 100 00:04:21,470 --> 00:04:22,185 확인을 클릭합니다. 101 00:04:22,185 --> 00:04:25,328 >> -I는 버블 정렬은 것 같아요 갈 길을 잘못합니다. 102 00:04:25,328 --> 00:04:26,792 >> [웃음] 103 00:04:26,792 --> 00:04:28,510 >> [갈채와 박수] 104 00:04:28,510 --> 00:04:31,211 >> 그이 말했다, 누가 - 가자! 105 00:04:31,211 --> 00:04:32,155 확인을 클릭합니다. 106 00:04:32,155 --> 00:04:33,350 >> [END 동영상 재생] 107 00:04:33,350 --> 00:04:35,070 >> DAVID 마란 : 그래서 당신이 그것을 가지고. 108 00:04:35,070 --> 00:04:39,600 그래서 우리는 이러한 실행을 정량화하기 시작했다 시간, 그래서 뭔가, 말하자면 109 00:04:39,600 --> 00:04:43,480 이다 점근 표기법이라고 그냥 돌려 우리의 종류를 참조 110 00:04:43,480 --> 00:04:47,420 장님 그 작은 요인에 눈 단지 실행 시간에 찾고, 111 00:04:47,420 --> 00:04:51,250 이러한 알고리즘의 성능, 여기서 n은 시간이 지남에 정말 많은수록. 112 00:04:51,250 --> 00:04:55,110 그래서 우리는 큰 O. 큰 O를 도입 우리가 생각하는 표현인가 113 00:04:55,110 --> 00:04:57,000 상한으로의. 114 00:04:57,000 --> 00:04:59,570 실제로, 배리, 우리는 낮출 수 있습니다 마이크 조금 이상? 115 00:04:59,570 --> 00:05:01,040 >> 우리는이 상한이다 생각했다. 116 00:05:01,040 --> 00:05:04,710 N 제곱을 의미하므로 큰 O에서 해당 최악의 경우, 같은 117 00:05:04,710 --> 00:05:07,780 선택 정렬은 걸릴 것 제곱 단계를 명. 118 00:05:07,780 --> 00:05:10,310 삽입 정렬처럼 또는 뭔가 N 제곱 단계는 것이다. 119 00:05:10,310 --> 00:05:15,150 이제 삽입과 같은 뭔가를 정렬 최악의 경우 무엇 이었습니까? 120 00:05:15,150 --> 00:05:18,200 배열을 지정해, 무엇 최악의 당신이 찾을 수있는 가능한 시나리오 121 00:05:18,200 --> 00:05:20,650 스스로에 직면? 122 00:05:20,650 --> 00:05:21,860 >> 확실히, 완전히 거꾸로입니까? 123 00:05:21,860 --> 00:05:24,530 완전히 거꾸로의 경우 때문에, 당신은 일의 전체를 많이해야 해요. 124 00:05:24,530 --> 00:05:26,420 때문에 당신은 완전히 거꾸로 있다면, 당신을 찾을거야 125 00:05:26,420 --> 00:05:28,840 여기에 가장 큰 요소에도 그것은 거기 속한다. 126 00:05:28,840 --> 00:05:31,140 그래서 당신은에서 말 모든 권리거야 시간이 순간, 당신은 여기에 속한다 127 00:05:31,140 --> 00:05:32,310 그래서 당신은 혼자 둡니다. 128 00:05:32,310 --> 00:05:35,425 >> 그럼 당신은, 오, 실현 빌어 먹을, 난에있다 이 약간 작은 요소로 이동 129 00:05:35,425 --> 00:05:36,470 당신의 왼쪽. 130 00:05:36,470 --> 00:05:38,770 그럼 난 다시 할 필요가 그리고 또 다시. 131 00:05:38,770 --> 00:05:41,410 그리고 앞뒤로 걸어 경우, 의 성능을 느낄 일종의 것이다 132 00:05:41,410 --> 00:05:45,540 이 알고리즘 때문에 지속적 나는 어디로 아래로 다른 사람을 걸어 갔다 133 00:05:45,540 --> 00:05:46,510 그것을위한 공간을 만들기 위해 배열입니다. 134 00:05:46,510 --> 00:05:47,750 그래서는 최악의 경우입니다. 135 00:05:47,750 --> 00:05:48,570 >> 대조적으로 - 136 00:05:48,570 --> 00:05:50,320 이것은 마지막 클리프 행어이었다 - 137 00:05:50,320 --> 00:05:54,065 우리는 말했다 삽입 정렬 무엇 오메가인가? 138 00:05:54,065 --> 00:05:57,530 최상의 경우의 실행은 무엇입니까 삽입 정렬의 시간은? 139 00:05:57,530 --> 00:05:58,520 그래서 실제로 보군. 140 00:05:58,520 --> 00:06:00,980 그것은 우리가 떠난 빈이었다 보드의 마지막 시간입니다. 141 00:06:00,980 --> 00:06:03,160 >> 그리고 N의 오메가 이유 때문입니까? 142 00:06:03,160 --> 00:06:06,630 물론, 가장 좋은 경우에, 무엇을 삽입 정렬이 전달 될 것? 143 00:06:06,630 --> 00:06:09,830 완전히 분류의 우물, 목록 이미 할 수있는 최소한의 일. 144 00:06:09,830 --> 00:06:12,460 하지만이 삽입 정렬에 대한 스트레이트의 그것은 여기 시작하고 있기 때문이다 145 00:06:12,460 --> 00:06:15,340 결정, 오, 당신은 수있다 하나는, 당신은 여기에 속한다. 146 00:06:15,340 --> 00:06:16,970 오, 행운. 147 00:06:16,970 --> 00:06:17,740 >> 당신은 두 번째입니다. 148 00:06:17,740 --> 00:06:19,030 당신은 또한 여기에 속한다. 149 00:06:19,030 --> 00:06:21,010 더 나은 셋째, 당신은 여기에 속한다. 150 00:06:21,010 --> 00:06:25,210 그것은의 끝에 도달하자마자 목록, 당​​ 삽입 정렬의 의사 151 00:06:25,210 --> 00:06:28,010 우리는 구두를 걸어 마지막으로, 그것은 이루어집니다. 152 00:06:28,010 --> 00:06:32,790 하지만, 선택 정렬, 대조적으로, 뭐 계속? 153 00:06:32,790 --> 00:06:35,260 >> 보관은 목록을가는 다시하고 다시하고 다시. 154 00:06:35,260 --> 00:06:39,160 키 통찰력 만이 있었으므로 당신은 모든 방법을 검토 한 후 155 00:06:39,160 --> 00:06:42,500 목록의 끝에 당신은 확신 할 수 있습니다 선택한 요소라고 156 00:06:42,500 --> 00:06:45,560 실제로 현재 가장 작은 요소입니다. 157 00:06:45,560 --> 00:06:48,920 서로 다른 정신 모형의 끝은 이렇게 매우 현실 세계를 산출까지 158 00:06:48,920 --> 00:06:53,130 우리의 차이뿐만 아니라, 이러한 이론적 점근 차이. 159 00:06:53,130 --> 00:06:56,910 >> 그래서 그냥 N 큰 O, 다음, 요점을 되풀이하는 제곱, 우리는 몇 가지 예를 본 적이 160 00:06:56,910 --> 00:06:58,350 지금까지 알고리즘. 161 00:06:58,350 --> 00:06:59,580 N의 큰 O? 162 00:06:59,580 --> 00:07:02,870 수있는 알고리즘은 무엇입니까 N 큰 O라고 할? 163 00:07:02,870 --> 00:07:06,930 최악의 경우, 그것은 걸립니다 단계의 선형 수. 164 00:07:06,930 --> 00:07:07,810 >> OK, 선형 검색 할 수 있습니다. 165 00:07:07,810 --> 00:07:10,470 그리고 최악의 경우, 어디에 요소 당신은 언제 찾고 166 00:07:10,470 --> 00:07:12,950 선형 검색을 적용? 167 00:07:12,950 --> 00:07:14,680 >> OK, 최악의 경우, 심지어이 아니다. 168 00:07:14,680 --> 00:07:17,000 또는 두 번째 최악의 경우, 그것은이다 는 결국 모든 방법, 169 00:07:17,000 --> 00:07:18,880 플러스 마이너스 한 단계의 차이. 170 00:07:18,880 --> 00:07:21,180 그래서 하루의 끝에, 우리는 선형 말할 수 있습니다. 171 00:07:21,180 --> 00:07:23,910 N의 큰 O는 선형 검색 될 것 최악의 경우, 때문에 172 00:07:23,910 --> 00:07:26,610 요소도이 아니라 나입니다 끝에서 끝까지. 173 00:07:26,610 --> 00:07:29,370 >> 음, N의 로그의 큰 O. 174 00:07:29,370 --> 00:07:32,760 우리에 대해 아주 자세하게 얘기하지 않았다 이, 그러나 우리는 전에 본 적이 있어요. 175 00:07:32,760 --> 00:07:36,840 무엇 소위 대수에서 실행 시간, 최악의 경우? 176 00:07:36,840 --> 00:07:38,500 >> 네, 이진 검색. 177 00:07:38,500 --> 00:07:42,930 최악의 경우와 이진 검색 어딘가에있는 요소가있을 수 있습니다 178 00:07:42,930 --> 00:07:45,640 중간, 또는 어딘가에 배열의 내부. 179 00:07:45,640 --> 00:07:48,040 그러나 당신은 일단 당신이 그것을 발견 에 반으로 목록을 나눕니다 180 00:07:48,040 --> 00:07:48,940 절반, 절반, 절반합니다. 181 00:07:48,940 --> 00:07:50,200 그리고 짜잔, 그것은이있다. 182 00:07:50,200 --> 00:07:52,500 아니면 다시, 최악의 경우, 심지어이 아니다. 183 00:07:52,500 --> 00:07:56,770 하지만 당신은 그것이 존재하지 모르겠어요 당신은 종류의 마지막에 도달 할 때까지 184 00:07:56,770 --> 00:08:00,470 절반으로 최하위 요소 그리고 절반과 절반. 185 00:08:00,470 --> 00:08:01,400 >> 1 큰 O. 186 00:08:01,400 --> 00:08:03,540 그래서 우리는 3 중 2 큰 O의 큰 O 할 수 있습니다. 187 00:08:03,540 --> 00:08:06,260 당신은 단지 상수를 원하는 언제든지, 우리는 그냥 간단하게 일종의 188 00:08:06,260 --> 00:08:07,280 그 1 큰 O로. 189 00:08:07,280 --> 00:08:10,440 도 현실적으로 걸리는 경우 비록 그것은의 2 또는 100 단계, 경우 190 00:08:10,440 --> 00:08:13,680 단계 상수, 우리는 단지 1 큰 O 말한다. 191 00:08:13,680 --> 00:08:15,930 의 알고리즘은 무엇입니까 1 큰 O에서? 192 00:08:15,930 --> 00:08:18,350 >> 대상 : 길이를 찾기 변수의. 193 00:08:18,350 --> 00:08:21,090 >> DAVID 마란 : 찾기 변수의 길이는? 194 00:08:21,090 --> 00:08:23,870 >> 대상 : 아니, 길이 그것은 이미 정렬 거라면. 195 00:08:23,870 --> 00:08:24,160 >> DAVID 마란 : 좋은. 196 00:08:24,160 --> 00:08:27,850 좋아, 그럼 뭔가의 길이를 찾는 만약 같은 무언가의 길이, 197 00:08:27,850 --> 00:08:30,020 배열은, 어떤 변수에 저장됩니다. 198 00:08:30,020 --> 00:08:33,380 당신은 그냥 변수를 읽을 수 있기 때문에 또는 변수를 인쇄하거나, 199 00:08:33,380 --> 00:08:34,960 그냥 일반적으로 해당 변수에 액세스 할 수 있습니다. 200 00:08:34,960 --> 00:08:37,299 일정 시간이 소요 봐라. 201 00:08:37,299 --> 00:08:38,909 >> 대조적으로, 스크래치 다시 생각합니다. 202 00:08:38,909 --> 00:08:42,460 C의 첫 주에 다시 생각, 그냥 printf의 호출 및 인쇄 203 00:08:42,460 --> 00:08:46,240 화면에 무언가가 틀림없이 있습니다 일정 시간이, 그냥 걸리기 때문에 204 00:08:46,240 --> 00:08:50,880 표시하는 CPU 사이클의 일부 수 경우, 화면에 텍스트를 입력합니다. 205 00:08:50,880 --> 00:08:52,720 또는 대기 - 그것은 무엇입니까? 206 00:08:52,720 --> 00:08:56,430 어떻게 다른 우리를 모델링 할 수 printf의 성능? 207 00:08:56,430 --> 00:09:00,420 누군가가 동의하고 싶습니다 어쩌면 정말 일정 시간이 아니다? 208 00:09:00,420 --> 00:09:03,600 printf를 달리고 있습니다 어떤 의미에서 시간은 사실에 문자열을 출력 209 00:09:03,600 --> 00:09:05,580 화면이 뭔가 상수가 아닌. 210 00:09:05,580 --> 00:09:07,860 >> 대상 : [들림]. 211 00:09:07,860 --> 00:09:08,230 >> DAVID 마란 : 네. 212 00:09:08,230 --> 00:09:09,300 그래서 우리의 관점에 따라 달라집니다. 213 00:09:09,300 --> 00:09:13,390 우리가 실제로에 대한 입력으로 생각하면 문자열 것으로 printf를하고, 214 00:09:13,390 --> 00:09:16,380 그러므로 우리는 그것의 크기를 측정 그 길이로 입력 - 지금의 호출하자 215 00:09:16,380 --> 00:09:17,780 그뿐만 아니라 길이 N - 216 00:09:17,780 --> 00:09:21,990 틀림없이, printf의 자체 n은 큰 O입니다 당신 N 조치를 취할 것 때문에 217 00:09:21,990 --> 00:09:24,750 그 N의 각을 인쇄하려면 대부분 문자. 218 00:09:24,750 --> 00:09:27,730 적어도 우리가 생각하는 정도 아마 루프를 사용하고 있다고 219 00:09:27,730 --> 00:09:28,560 후드 아래에. 220 00:09:28,560 --> 00:09:30,860 >> 그러나 우리는보고해야 할 것 그것을 더 잘 이해하기 위해 코드입니다. 221 00:09:30,860 --> 00:09:33,650 그리고 실제로, 일단 너희들 시작 당신은 당신의 자신의 알고리즘을 것이다 분석 222 00:09:33,650 --> 00:09:34,900 그대로 그냥 그렇게. 223 00:09:34,900 --> 00:09:37,765 안구의 정렬 코드와 생각 약 - 괜찮아,이 루프를 가지고 224 00:09:37,765 --> 00:09:41,870 여기 아니면 여기에 중첩 루프가 N 물건을 n 번 수행 할거야 그 225 00:09:41,870 --> 00:09:46,050 그리고 당신은 이유의 방법을 정렬 할 수 있습니다 코드를 경우에도 그것은의 226 00:09:46,050 --> 00:09:47,980 의사가 아닌 실제 코드입니다. 227 00:09:47,980 --> 00:09:49,730 >> 그래서 제곱 N의 오메가 어떨까요? 228 00:09:49,730 --> 00:09:53,582 알고리즘은 무엇입니까있는 베스트의 사건은 여전히​​ 갔다 N 제곱 단계? 229 00:09:53,582 --> 00:09:54,014 그래? 230 00:09:54,014 --> 00:09:54,880 >> 대상 : [들림]. 231 00:09:54,880 --> 00:09:55,900 >> DAVID 마란 : 그래서 선택 정렬. 232 00:09:55,900 --> 00:09:59,150 이 문제에 실제로 감소하기 때문에 또, 내가 모르는 사실 233 00:09:59,150 --> 00:10:02,600 내가 때까지 현재 작은 발견했습니다 난 이놈의 요소를 검사했다. 234 00:10:02,600 --> 00:10:08,050 N, 말, 너무 오메가, 우리 단지 하나 내놓았다. 235 00:10:08,050 --> 00:10:09,300 삽입 정렬. 236 00:10:09,300 --> 00:10:12,370 목록 정렬 할 것을 일어나는 경우에 이미 최상의 경우에 우리는 단지이 237 00:10:12,370 --> 00:10:15,090 그것을 통해 하나의 통과를 만들기 위해, 이는 우리가 확실 시점에서. 238 00:10:15,090 --> 00:10:17,890 그리고 말할 수있다 그 확실히, 선형 수 있습니다. 239 00:10:17,890 --> 00:10:20,570 >> 1 오메가 어떻습니까? 240 00:10:20,570 --> 00:10:23,790 최상의 경우에 걸릴 수 있는가, 단계 상수? 241 00:10:23,790 --> 00:10:27,220 그래서 선형 검색, 당신은 단지 운 경우 당신이 찾고있는 요소 242 00:10:27,220 --> 00:10:31,000 , 목록의 시작 부분에 맞는 당신이 시작하는 곳이라면 243 00:10:31,000 --> 00:10:33,070 이 목록의 선형 탐색. 244 00:10:33,070 --> 00:10:35,180 >> 그리고 이것은 마찬가지입니다 가지 수. 245 00:10:35,180 --> 00:10:37,660 예를 들어,도 진 검색 결과 1의 오메가이다. 246 00:10:37,660 --> 00:10:40,310 당신은 정말 터무니 무엇을 얻는 경우에 때문에, 의 중간에 행운과 입맛을 다시 한 덩어리 247 00:10:40,310 --> 00:10:42,950 귀하의 배열은 번호 당신이 찾고있는거야? 248 00:10:42,950 --> 00:10:45,730 그래서 당신은뿐만 아니라, 거기에 운이 수 있습니다. 249 00:10:45,730 --> 00:10:49,190 >> 이 하나, 마지막으로, N 로그 N의 오메가. 250 00:10:49,190 --> 00:10:52,573 그래서 N 로그 N, 우리가 정말하지 않았다 아직 얘기하지만 - 251 00:10:52,573 --> 00:10:53,300 >> 대상 : 정렬 병합? 252 00:10:53,300 --> 00:10:53,960 >> DAVID 마란 : 병합 정렬. 253 00:10:53,960 --> 00:10:56,920 즉, 마지막의 클리프 행어했다 우리는 제안, 우리는 보여 주었다 곳 254 00:10:56,920 --> 00:10:58,600 시각적 알고리즘이 있다는 것을. 255 00:10:58,600 --> 00:11:02,470 단지 하나의 정렬 병합 기본적으로 빠른 알고리즘 256 00:11:02,470 --> 00:11:03,450 다른 사람의 일부보다. 257 00:11:03,450 --> 00:11:07,800 사실에서뿐만 아니라 짧은 병합 최악의 최상의 경우 N 로그 N, 258 00:11:07,800 --> 00:11:09,460 경우 N 로그 N. 259 00:11:09,460 --> 00:11:14,540 그리고 당신이 우연의 일치가있을 때 오메가 큰 O는 같은 것 인? 260 00:11:14,540 --> 00:11:17,310 우리가 실제로 무엇으로 그렇게 설명 할 수 그것은 비록, 세타라고 261 00:11:17,310 --> 00:11:18,220 덜 일반적인. 262 00:11:18,220 --> 00:11:21,730 하지만 단지 두 개의 범위를 의미 이 경우 동일합니다. 263 00:11:21,730 --> 00:11:25,770 >> 그래서 정렬을 병합이 어떤 작업을 수행 우리에게 정말 졸이다? 264 00:11:25,770 --> 00:11:27,000 그럼, 동기를 기억합니다. 265 00:11:27,000 --> 00:11:30,340 내가 다른 애니메이션이를 끌어하자 우리는 지난 시간에 보이지 않았다. 266 00:11:30,340 --> 00:11:33,390 이 하나의 같은 생각하지만, 조금 더 크다. 267 00:11:33,390 --> 00:11:36,160 내가 가서 지적하는거야 첫 번째 - 우리에 삽입 정렬을 268 00:11:36,160 --> 00:11:39,410 왼쪽, 다음, 선택 정렬, 버블 정렬, 다른 종류의 몇 - 269 00:11:39,410 --> 00:11:42,670 쉘 및 빠른 - 우리가 이야기하지 않은 에 대한, 그리고 힙 정렬을 병합합니다. 270 00:11:42,670 --> 00:11:47,090 >> 적어도 당신의 눈을 집중하려고합니다 그래서 그런 다음 왼쪽에있는 세 개의 상단 및 271 00:11:47,090 --> 00:11:49,120 내가 클릭하면 정렬 병합 이 녹색 화살표. 272 00:11:49,120 --> 00:11:51,900 하지만 난 그냥에, 그들 모두 실행할 수 있습니다 당신의 다양성의 감각을 제공합니다 273 00:11:51,900 --> 00:11:53,980 세계에 존재하는 알고리즘. 274 00:11:53,980 --> 00:11:56,180 나는이 실행을 두지 않을거야 몇 초. 275 00:11:56,180 --> 00:11:59,640 그리고 당신은 당신의 눈을 집중하면 -를 선택 단지에 대한 알고리즘은, 그것에 초점 276 00:11:59,640 --> 00:12:02,970 초 - 당신을보고 시작합니다 이 구현 그건 패턴입니다. 277 00:12:02,970 --> 00:12:04,530 >> 병합 정렬 통지가 이루어집니다. 278 00:12:04,530 --> 00:12:06,430 힙 정렬, 빠른 정렬, 쉘 - 279 00:12:06,430 --> 00:12:09,480 우리는 세 가지를 소개하므로 보인다 최악의 알고리즘 지난 주. 280 00:12:09,480 --> 00:12:12,960 그러나 그것은 우리가 오늘 여기에 걸 좋은 병합 정렬 보면, 그 중 하나입니다 281 00:12:12,960 --> 00:12:16,500 쉽게 사람도, 보는 것입니다 아마 당신의 마음을 구부릴하지만 282 00:12:16,500 --> 00:12:17,490 단지 조금. 283 00:12:17,490 --> 00:12:21,130 여기에 우리가 볼 수있는 얼마나 많은 선택 정렬 안됐다. 284 00:12:21,130 --> 00:12:24,600 >> 하지만 플립 측면에서, 그것은이다 구현하기가 정말 쉽습니다. 285 00:12:24,600 --> 00:12:28,160 그리고 아마 P 세트 3, 그 중 하나 당신이 구현하는 선택 알고리즘 286 00:12:28,160 --> 00:12:28,960 표준 에디션. 287 00:12:28,960 --> 00:12:30,970 완벽하게 정확하고 완벽하게 정상적으로. 288 00:12:30,970 --> 00:12:35,210 >> 그러나 다시, n은 많은수록, 만약 당신 빠른 알고리즘을 구현하도록 선택할 289 00:12:35,210 --> 00:12:39,020 정렬 병합 좋아 확률이있는 크고있다 큰 입력, 코드는 단지 290 00:12:39,020 --> 00:12:39,800 빠르게 실행하는 것. 291 00:12:39,800 --> 00:12:41,090 귀하의 웹 사이트가 잘 작동거야. 292 00:12:41,090 --> 00:12:42,650 사용자가 행복 할 것입니다. 293 00:12:42,650 --> 00:12:45,280 그리고 이러한 효과가 있습니다 실제로주는 294 00:12:45,280 --> 00:12:47,350 우리 좀 더 깊은 생각했다. 295 00:12:47,350 --> 00:12:49,990 >> 그럼 병합했는지 살펴 보자 정렬에 관한 모든 사실이다. 296 00:12:49,990 --> 00:12:52,992 좋은 점은 병합이다 정렬은 이것이다. 297 00:12:52,992 --> 00:12:56,300 이것은 우리가 호출 한 것을 다시이며, 의사, 의사의 존재 298 00:12:56,300 --> 00:12:57,720 영어의 문법. 299 00:12:57,720 --> 00:12:59,890 그리고 단순하다 매력의 종류. 300 00:12:59,890 --> 00:13:02,840 >> 따라서 해당 요소의 입력에 - 그래서 그냥 의미, 여기 배열입니다. 301 00:13:02,840 --> 00:13:04,000 그것은 그것에서 N 물건을 가지고있다. 302 00:13:04,000 --> 00:13:05,370 그것은 우리가 말하고 전부입니다. 303 00:13:05,370 --> 00:13:07,560 >> n은 2보다 적은 경우, 반환합니다. 304 00:13:07,560 --> 00:13:08,640 그래서 그냥 사소한 사건. 305 00:13:08,640 --> 00:13:12,580 n은 2보다 작은 경우, 분명히이다 1 또는 0,이 경우 일 306 00:13:12,580 --> 00:13:14,780 이미 정렬 또는 존재하지 않는, 그래서 그냥 돌아갑니다. 307 00:13:14,780 --> 00:13:15,900 할 수있는 아무것도 없습니다. 308 00:13:15,900 --> 00:13:18,360 그래서 떨어져 당기기하는 간단한 경우입니다. 309 00:13:18,360 --> 00:13:20,110 >> 그렇지 않으면, 우리는 세 단계가 있습니다. 310 00:13:20,110 --> 00:13:23,650 요소의 왼쪽 절반, 정렬 정렬 요소의 오른쪽 절반, 311 00:13:23,650 --> 00:13:26,650 그리고 정렬 된 반쪽을 병합합니다. 312 00:13:26,650 --> 00:13:29,400 무엇을 여기에서 흥미로운 것은 그 금방, 평저선 (punt)을 타보는 종류 해요? 313 00:13:29,400 --> 00:13:32,300 원형 정의의 종류가있다 이 알고리즘. 314 00:13:32,300 --> 00:13:35,986 이 알고리즘의 어떤 의미에서 정의 원형? 315 00:13:35,986 --> 00:13:37,850 >> 대상 : [들림]. 316 00:13:37,850 --> 00:13:41,670 >> DAVID 마란 : 그래, 내 정렬 알고리즘 그 단계의 두 "일종의 317 00:13:41,670 --> 00:13:44,640 을 구걸 그래서 뭔가. "그리고 질문 그럼, 내가 사용하는 것입니다 318 00:13:44,640 --> 00:13:46,460 왼쪽 절반을 정렬하려면 그리고 오른쪽 절반? 319 00:13:46,460 --> 00:13:49,600 그리고 여기에 아름다움입니다 비록 다시, 이것은 마음 절곡입니다 320 00:13:49,600 --> 00:13:54,030 일부 잠재적으로, 당신은 동일한 사용할 수 있습니다 왼쪽 절반을 정렬하는 알고리즘입니다. 321 00:13:54,030 --> 00:13:54,700 >> 그러나 분을 기다립니다. 322 00:13:54,700 --> 00:13:57,070 당신을 정렬하라고 할 때 왼쪽 절반이 두 무엇입니까 323 00:13:57,070 --> 00:13:58,240 단계는 다음이 될 것? 324 00:13:58,240 --> 00:14:00,550 우리의 왼쪽 절반을 정렬 할 수 있습니다 왼쪽 절반과 오른쪽 325 00:14:00,550 --> 00:14:01,420 왼쪽 절반의 절반. 326 00:14:01,420 --> 00:14:04,430 젠장, 내가 어떻게 그 두 정렬 않는다 반쪽 또는 분기, 지금은? 327 00:14:04,430 --> 00:14:05,260 >> 하지만 그건 괜찮아. 328 00:14:05,260 --> 00:14:07,830 우리는 여기에서 정렬 알고리즘이 있습니다. 329 00:14:07,830 --> 00:14:10,660 그리고 당신은에 걱정하더라도 처음이 무한의 종류 330 00:14:10,660 --> 00:14:12,780 루프, 그것은 결코 사이클의 끝날 것 - 그것은 것입니다 331 00:14:12,780 --> 00:14:15,770 무슨 한 끝? 332 00:14:15,770 --> 00:14:16,970 일단 N 이하 2입니다. 333 00:14:16,970 --> 00:14:19,180 이는 결국 일어날 당신이 유지하는 경우에 등분하기 때문에 334 00:14:19,180 --> 00:14:23,020 이러한 반쪽 절반의 절반, 확실히 결국이 끝날거야 335 00:14:23,020 --> 00:14:25,350 다만 1 또는 0 요소를 백업합니다. 336 00:14:25,350 --> 00:14:28,500 이 시점,이 알고리즘에 작업을 완료했다. 337 00:14:28,500 --> 00:14:31,020 >> 따라서이있는 진짜 마술 알고리즘에있을 것 338 00:14:31,020 --> 00:14:33,470 그 최종 단계 병합. 339 00:14:33,470 --> 00:14:37,190 단지 두 가지를 병합하는 간단한 아이디어 일, 그 궁극적 무슨 일이야 340 00:14:37,190 --> 00:14:40,920 우리의 배열을 정렬 할 수 있도록하려면, 하자, 여덟 요소를 말한다. 341 00:14:40,920 --> 00:14:44,410 그래서 최대 8 개의 더 많은 스트레스 공을 가지고 여기에 여덟 종이 조각, 한 342 00:14:44,410 --> 00:14:45,500 구글 유리 - 343 00:14:45,500 --> 00:14:46,140 이는 내가 계속 얻는다. 344 00:14:46,140 --> 00:14:46,960 >> [웃음] 345 00:14:46,960 --> 00:14:48,970 >> DAVID 마란 : 우리는 팔을 수 있다면 자원 봉사자, 그리고 어디 보자 우리가 할 수있는 경우 346 00:14:48,970 --> 00:14:51,430 그래서,이를 재생할 수 있습니다. 347 00:14:51,430 --> 00:14:52,500 와우, 확인을 클릭합니다. 348 00:14:52,500 --> 00:14:53,565 컴퓨터 과학은 재미를 얻고있다. 349 00:14:53,565 --> 00:14:54,320 좋아. 350 00:14:54,320 --> 00:14:57,770 그래서 방법에 대해 당신이 세 거기 큰 손. 351 00:14:57,770 --> 00:14:58,580 다시 네. 352 00:14:58,580 --> 00:15:02,220 그리고 방법에 대해 우리는 당신을 다하겠습니다 이 행에서 세? 353 00:15:02,220 --> 00:15:03,390 앞과 네. 354 00:15:03,390 --> 00:15:04,920 그래서, 여덟 올라옵니다. 355 00:15:04,920 --> 00:15:12,060 >> [웃음] 356 00:15:12,060 --> 00:15:13,450 >> DAVID 마란 : 실제로 해요 아니 그것이 무엇인지 확인하십시오. 357 00:15:13,450 --> 00:15:14,810 그것은 긴장 공입니까? 358 00:15:14,810 --> 00:15:16,510 책상 램프? 359 00:15:16,510 --> 00:15:18,650 재료? 360 00:15:18,650 --> 00:15:19,680 인터넷? 361 00:15:19,680 --> 00:15:20,160 >> 확인을 클릭합니다. 362 00:15:20,160 --> 00:15:21,310 그래서 올라옵니다. 363 00:15:21,310 --> 00:15:22,310 누가 좋아 - 364 00:15:22,310 --> 00:15:23,570 오고 유지합니다. 365 00:15:23,570 --> 00:15:24,240 보자. 366 00:15:24,240 --> 00:15:26,460 그리고이 위치에 당신을두고 - 367 00:15:26,460 --> 00:15:27,940 당신은 위치 하나입니다. 368 00:15:27,940 --> 00:15:28,670 어 - 오, 잠깐만. 369 00:15:28,670 --> 00:15:30,760 1, 2, 3, 4, 5, 6, 7 - 좋아, 오. 370 00:15:30,760 --> 00:15:31,310 좋아, 우리는 좋은거야. 371 00:15:31,310 --> 00:15:35,130 좋아, 그래서 모두가 자리를 하지만 구글 유리합니다. 372 00:15:35,130 --> 00:15:36,475 나 대기열이 업을 할 수 있습니다. 373 00:15:36,475 --> 00:15:37,115 당신의 이름은 무엇입니까? 374 00:15:37,115 --> 00:15:37,440 >> MICHELLE : 미셸. 375 00:15:37,440 --> 00:15:38,090 >> DAVID 마란 : 미셸? 376 00:15:38,090 --> 00:15:42,000 좋아, 당신은 같이 얻을 괴짜, OK 그건 경우. 377 00:15:42,000 --> 00:15:44,625 음, 나도 할, 나는 가정, 단지 순간을 위해. 378 00:15:44,625 --> 00:15:45,875 대기, 좋아. 379 00:15:45,875 --> 00:15:48,510 380 00:15:48,510 --> 00:15:50,950 우리는 함께 올 시도를하고 있어요 구글 유리 케이스를 사용하고, 우리 381 00:15:50,950 --> 00:15:53,750 그것은 마찬가지로 재미있을 것이라고 생각 이 사람들은 무대 때. 382 00:15:53,750 --> 00:15:57,120 우리는 세계를 기록합니다 자신의 관점에서. 383 00:15:57,120 --> 00:15:58,410 좋아. 384 00:15:58,410 --> 00:15:59,830 하지 아마도 Google이 의도 한. 385 00:15:59,830 --> 00:16:02,260 당신이 괜찮다면 괜찮아 착용 다음 어색한 분 동안이, 386 00:16:02,260 --> 00:16:03,150 그 멋진 될 것입니다. 387 00:16:03,150 --> 00:16:08,620 >> 좋아, 그래서 우리는 여기의 배열을 요소, 그리고 당이 배열, 388 00:16:08,620 --> 00:16:11,480 이 사람들 종이 조각 ' 손은 현재 정렬되지 않은 있습니다. 389 00:16:11,480 --> 00:16:12,050 >> MICHELLE : 아, 그건 너무 이상하다. 390 00:16:12,050 --> 00:16:12,810 >> DAVID 마란 : 그것은 거의 무작위입니다. 391 00:16:12,810 --> 00:16:15,760 그냥 순간에, 우리 시도 할거야 함께 일종의 통합 구현 392 00:16:15,760 --> 00:16:17,950 그 키에 대한 통찰력이 어디를 참조하십시오. 393 00:16:17,950 --> 00:16:21,970 및 병합 정렬과 함께 여기에 트릭은 우리가 아직 생각하지 않은 무언가. 394 00:16:21,970 --> 00:16:24,030 우리가 실제로 어떤 필요 추가 공간. 395 00:16:24,030 --> 00:16:26,650 그래서 특히 될 것 이것에 대해 흥미는 그이 396 00:16:26,650 --> 00:16:29,270 사람은 조금을 이동하려고 비트 때문에 가정려고하는 397 00:16:29,270 --> 00:16:31,880 공간의 여분 배열이있다 바로 그 뒤에 말한다. 398 00:16:31,880 --> 00:16:34,570 >> 그들은 자신의 의자 뒤에, 그래서 경우 보조 배열이 있습니다. 399 00:16:34,570 --> 00:16:36,960 그들은 여기 앉아 있다면, 그건 기본 배열입니다. 400 00:16:36,960 --> 00:16:40,170 그러나 이것은 우리가 가지고있는 자원이다 거품 지금까지 활용되지 401 00:16:40,170 --> 00:16:42,040 정렬, 선택 정렬과 함께, 삽입 정렬과 함께. 402 00:16:42,040 --> 00:16:44,600 지난 주 기억, 모두 단지 의 종류는 장소에 단행. 403 00:16:44,600 --> 00:16:46,840 그들은 어떤 메모리를 추가로 사용하지 않았다. 404 00:16:46,840 --> 00:16:49,310 우리가 사람들을위한 공간을 만들어 사람들을 이동. 405 00:16:49,310 --> 00:16:50,580 >> 그래서도 중요한 통찰력이다. 406 00:16:50,580 --> 00:16:53,410 이 트레이드 오프에 일반적으로있다 자원의 컴퓨터 과학. 407 00:16:53,410 --> 00:16:55,800 당신이 뭔가를 가속화하려는 경우 시간처럼, 당신은에 갈거야 408 00:16:55,800 --> 00:16:56,900 가격을 지불해야합니다. 409 00:16:56,900 --> 00:17:00,750 그리고 그 가격 중 하나가 매우 자주 공간, 메모리 용량 또는 하드 410 00:17:00,750 --> 00:17:01,700 당신이 사용중인 디스크 공간. 411 00:17:01,700 --> 00:17:03,640 아니면, 솔직히 양 프로그래머의 시간. 412 00:17:03,640 --> 00:17:06,700 얼마를 그것은 인간의, 당신을 소요 시간 실제로는 좀 더 구현하기 413 00:17:06,700 --> 00:17:07,829 복잡한 알고리즘입니다. 414 00:17:07,829 --> 00:17:09,760 그러나 오늘, 트레이드 오프 시간과 공간입니다. 415 00:17:09,760 --> 00:17:11,930 >> 너희들은 그냥 잡을 수 있도록 경우 그래서 우리는 당신이 걸 번호를 볼 수 있습니다 416 00:17:11,930 --> 00:17:15,839 실제로, 2, 4, 6, 1, 3, 7, 8을 일치. 417 00:17:15,839 --> 00:17:16,599 우수. 418 00:17:16,599 --> 00:17:19,520 그래서 조율을 시도하는거야 일, 만약 너희들이 할 수있는 단지 419 00:17:19,520 --> 00:17:21,800 여기 내 리드를 따르십시오. 420 00:17:21,800 --> 00:17:26,650 >> 그래서 먼저 구현 예정 는 의사의 첫 번째 단계 421 00:17:26,650 --> 00:17:29,440 n은 N이면 요소의 입력에 2보다 작은 경우 반환합니다. 422 00:17:29,440 --> 00:17:31,370 물론, 그하지 않습니다 적용한다, 그래서 우리는에 이동합니다. 423 00:17:31,370 --> 00:17:33,340 따라서 요소의 왼쪽 절반을 정렬합니다. 424 00:17:33,340 --> 00:17:36,220 그래서 내가 초점을거야 의미 내 다음에 그냥 잠시 주목 425 00:17:36,220 --> 00:17:37,310 여기 네 사람. 426 00:17:37,310 --> 00:17:39,774 좋아, 다음에 무엇을해야합니까? 427 00:17:39,774 --> 00:17:40,570 >> 대상 : 왼쪽 절반을 정렬합니다. 428 00:17:40,570 --> 00:17:42,780 >> DAVID 마란 : 그래서 지금은 정렬 할 수 있습니다 이 녀석의 왼쪽 절반입니다. 429 00:17:42,780 --> 00:17:45,580 다시 때문에 자신에 가정 목표는 왼쪽 절반을 정렬하는 것입니다. 430 00:17:45,580 --> 00:17:46,440 당신이 어떻게해야합니까? 431 00:17:46,440 --> 00:17:49,140 다만, 심지어 지침을 따르십시오 우리는 다시 일을하고 있지만. 432 00:17:49,140 --> 00:17:50,160 그래서 왼쪽 절반을 정렬합니다. 433 00:17:50,160 --> 00:17:52,030 이제이 두 사람을 분류하고 있습니다. 434 00:17:52,030 --> 00:17:53,563 무엇을 다음 온다? 435 00:17:53,563 --> 00:17:54,510 >> 대상 : 왼쪽 절반을 정렬합니다. 436 00:17:54,510 --> 00:17:55,460 >> DAVID 마란 : 왼쪽 절반을 정렬합니다. 437 00:17:55,460 --> 00:18:00,680 그래서 지금이, 여기 자리, 크기 1의 목록입니다. 438 00:18:00,680 --> 00:18:01,365 그리고 당신의 이름이 뭐였더라? 439 00:18:01,365 --> 00:18:02,390 >> PRINCESS DAISY : 공주 데이지. 440 00:18:02,390 --> 00:18:03,690 >> DAVID 마란 : 공주 데이지는 여기에있다. 441 00:18:03,690 --> 00:18:07,470 그리고 그녀는 이미 정렬되어 있기 때문에 목록의 크기는 1입니다. 442 00:18:07,470 --> 00:18:09,490 나는 다음에 무엇을해야합니까? 443 00:18:09,490 --> 00:18:13,680 그 목록입니다 때문에 OK, 반환 2보다 작은 크기 1. 444 00:18:13,680 --> 00:18:14,320 다음 단계는 무엇인가? 445 00:18:14,320 --> 00:18:17,490 그리고 지금 당신은 어떤 종류의에이 당신의 마음에있는 철수. 446 00:18:17,490 --> 00:18:19,340 >> 는 오른쪽 절반을 정렬 - 447 00:18:19,340 --> 00:18:19,570 당신의 이름은 무엇입니까? 448 00:18:19,570 --> 00:18:20,220 >> LINDA : 린다. 449 00:18:20,220 --> 00:18:20,980 >> DAVID 마란 : 린다. 450 00:18:20,980 --> 00:18:23,210 그래서 우리는 이제 무엇을해야합니까 우리는 크기 1의 목록을 가지고? 451 00:18:23,210 --> 00:18:24,440 >> 대상 : 돌아갑니다. 452 00:18:24,440 --> 00:18:24,760 >> DAVID 마란 : 조심. 453 00:18:24,760 --> 00:18:29,540 우리가 먼저 반환, 그리고 지금 세 번째 단계 -와 난 경우 종류로 그것을 묘사 454 00:18:29,540 --> 00:18:33,490 지금, 이제 두 개의 좌석을 수용 이 두 가지 요소를 병합해야합니다. 455 00:18:33,490 --> 00:18:35,530 그래서 지금 불행히도 요소 순서가. 456 00:18:35,530 --> 00:18:39,920 그러나 그것은 어디 병합 과정의 매력적인 얻을 시작합니다. 457 00:18:39,920 --> 00:18:42,410 >> 너희들은 일어서야 할 수 있도록하는 경우 순간, 난, 당신이 필요 해요 458 00:18:42,410 --> 00:18:44,170 순간, 당신의 의자 뒤에 단계를합니다. 459 00:18:44,170 --> 00:18:46,480 그리고 만약 린다, 2이기 때문에 4보다 작은, 왜하지 460 00:18:46,480 --> 00:18:48,130 먼저 주변에 오는가? 461 00:18:48,130 --> 00:18:48,690 거기있어. 462 00:18:48,690 --> 00:18:50,520 린다 그래서, 먼저 돌아올. 463 00:18:50,520 --> 00:18:53,820 >> 지금 현실에서 그것은 단지 배열의 경우 우리는 단지 실시간에 그녀를 이동할 수 있습니다 464 00:18:53,820 --> 00:18:55,360 이 의자에서이 자리합니다. 465 00:18:55,360 --> 00:18:57,770 그래서 몇 가지 상수를했다 그 상상 1 단계의 수. 466 00:18:57,770 --> 00:18:58,480 그리고 지금 - 467 00:18:58,480 --> 00:19:01,490 그러나 우리는 당신을 넣어해야합니다 여기에서 첫 번째 위치입니다. 468 00:19:01,490 --> 00:19:03,930 >> 그리고 지금 당신은 돌아올 수 있다면 뿐만 아니라, 우리가가는거야 469 00:19:03,930 --> 00:19:06,300 위치 두합니다. 470 00:19:06,300 --> 00:19:09,120 그리고 그것은처럼이 느낌에도 불구하고 잠시 복용이며, 지금은 좋은거야 471 00:19:09,120 --> 00:19:14,710 그의 왼쪽 반 왼쪽 절반은 현재 정렬됩니다. 472 00:19:14,710 --> 00:19:18,010 지금 우리 경우에 따라서 다음 단계는 무엇 이었습니까 이야기에 더 되감기? 473 00:19:18,010 --> 00:19:18,980 >> 대상 : 오른쪽 절반. 474 00:19:18,980 --> 00:19:19,900 >> DAVID 마란 : 오른쪽 절반을 정렬합니다. 475 00:19:19,900 --> 00:19:21,320 그래서 너희들은뿐만 아니라,이 작업을 수행 할 수 있습니다. 476 00:19:21,320 --> 00:19:23,510 당신은 일 어설 수 있도록하는 경우 단지 순간을 위해? 477 00:19:23,510 --> 00:19:25,192 그리고 당신의 이름은 무엇입니까? 478 00:19:25,192 --> 00:19:25,540 >> JESS : 제스. 479 00:19:25,540 --> 00:19:25,870 >> DAVID 마란 : 제스. 480 00:19:25,870 --> 00:19:29,720 좋아, 그럼 제스 지금은 왼쪽입니다 오른쪽 절반의 절반. 481 00:19:29,720 --> 00:19:31,400 그리고 그녀는 크기 1의 목록입니다. 482 00:19:31,400 --> 00:19:32,380 그녀는 분명히 소팅. 483 00:19:32,380 --> 00:19:33,070 그리고 당신의 이름을 다시? 484 00:19:33,070 --> 00:19:33,630 >> MICHELLE : 미셸. 485 00:19:33,630 --> 00:19:35,340 >> DAVID 마란 : 미셸 분명히 크기 1의 목록입니다. 486 00:19:35,340 --> 00:19:36,050 그녀는 이미 정렬있어. 487 00:19:36,050 --> 00:19:38,690 이제 마법은 어떻게 병합 프로세스입니다. 488 00:19:38,690 --> 00:19:39,790 그럼 누가 먼저 온거야? 489 00:19:39,790 --> 00:19:41,560 물론 미셸. 490 00:19:41,560 --> 00:19:43,280 당신은 다시 돌아올 수 있도록합니다. 491 00:19:43,280 --> 00:19:47,090 지금 우리가 그녀를 위해 준비해 공간 여기이 의자 뒤에. 492 00:19:47,090 --> 00:19:51,580 그리고 지금 당신은뿐만 아니라 다시 올 수 있다면, 우리는 지금 두 명확하게 가지고 493 00:19:51,580 --> 00:19:53,810 반쪽 사이즈 2 각 - 494 00:19:53,810 --> 00:19:57,090 단지 묘사의를 위해서, 만약 당신 약간의 공간을 만들 수 있습니다 - 495 00:19:57,090 --> 00:19:59,780 하나는 절반 여기 남아 여기에 오른쪽 절반. 496 00:19:59,780 --> 00:20:01,160 >> 이야기에 더 되감기. 497 00:20:01,160 --> 00:20:02,270 어떤 단계에서 다음인가? 498 00:20:02,270 --> 00:20:03,030 >> 대상 : 병합합니다. 499 00:20:03,030 --> 00:20:04,160 >> DAVID 마란 : 그래서 지금 우리는 병합해야합니다. 500 00:20:04,160 --> 00:20:07,490 그래서 OK, 이제 다행히도, 우리 단지 네 개의 의자를 해제. 501 00:20:07,490 --> 00:20:11,480 그래서 우리는 많은 메모리를 두 번 사용하지만, 한 우리는 플립 툭 사이를 줄 수 502 00:20:11,480 --> 00:20:12,330 두 배열. 503 00:20:12,330 --> 00:20:14,190 그래서 어떤 번호가 먼저 와야하는 것입니다? 504 00:20:14,190 --> 00:20:14,850 그래서 분명히, 미셸. 505 00:20:14,850 --> 00:20:16,680 그래서 돌아올 취 여기에 좌석. 506 00:20:16,680 --> 00:20:19,120 그리고 숫자 2는 분명히 다음, 당신은 여기에 온다. 507 00:20:19,120 --> 00:20:21,520 4 번, 6 번. 508 00:20:21,520 --> 00:20:23,390 그리고 또있다하더라도 관련 걷는 조금, 509 00:20:23,390 --> 00:20:26,010 정말, 이들은 즉시 일어날 수 - 하나를 이동하여 510 00:20:26,010 --> 00:20:26,880 OK, 잘했다. 511 00:20:26,880 --> 00:20:28,350 >> [웃음] 512 00:20:28,350 --> 00:20:29,680 >> DAVID 마란 : 그리고 지금 우리입니다 꽤 좋은 모양있다. 513 00:20:29,680 --> 00:20:34,910 전체의 왼쪽 절반 입력은 이제 정렬 된. 514 00:20:34,910 --> 00:20:37,370 좋아, 그래서이 사람들이 있었다 제의 장점 - 515 00:20:37,370 --> 00:20:40,340 어떻게 모든 여자를 끝낼 않았다 왼쪽과 오른쪽에있는 모든 남자? 516 00:20:40,340 --> 00:20:42,450 >> 좋아, 그럼 너희들은 이제 설정 '. 517 00:20:42,450 --> 00:20:44,680 그래서 나는 과정을 안내하지 않습니다 이러한 단계. 518 00:20:44,680 --> 00:20:46,550 우리가 다시 적용 할 수 있다면 우리는 볼 수 있습니다 같은 의사. 519 00:20:46,550 --> 00:20:50,050 당신은 가서, 일어서려면 그리고 너희들은 내가 당신에게 마이크를 제공 할 수 있습니다. 520 00:20:50,050 --> 00:20:52,990 당신이 복제 할 수 있는지 무엇을 우리는 단지 여기에 한 521 00:20:52,990 --> 00:20:53,880 목록의 다른 쪽 끝을. 522 00:20:53,880 --> 00:20:59,530 누가 먼저 말을해야합니다 알고리즘을 기반으로? 523 00:20:59,530 --> 00:21:03,210 그래서 당신이 전에 무슨 일을하는지 설명 당신은 어떤 다리 운동을합니다. 524 00:21:03,210 --> 00:21:05,930 >> 스피커 1 : 좋아, 그래서 이후 나는의 왼쪽 절반입니다 525 00:21:05,930 --> 00:21:07,790 왼쪽 절반, 나는 반환합니다. 526 00:21:07,790 --> 00:21:08,730 오른쪽? 527 00:21:08,730 --> 00:21:09,250 >> DAVID 마란 : 좋은. 528 00:21:09,250 --> 00:21:10,350 >> - 그리고 스피커 : 1 529 00:21:10,350 --> 00:21:11,800 >> DAVID 마란 : 수행 마이크 옆에 가서? 530 00:21:11,800 --> 00:21:12,920 >> 스피커 1 : 다음 번호입니다. 531 00:21:12,920 --> 00:21:14,720 >> 스피커 2 : 그래서 오른쪽 절반 해요 의 왼쪽 반 532 00:21:14,720 --> 00:21:17,830 왼쪽 절반, 나는 반환합니다. 533 00:21:17,830 --> 00:21:18,050 >> DAVID 마란 : 좋은. 534 00:21:18,050 --> 00:21:18,550 당신이 돌아갑니다. 535 00:21:18,550 --> 00:21:21,855 그래서 지금 당신이 두 가지의 옆에 무엇입니까? 536 00:21:21,855 --> 00:21:23,740 >> 스피커 2 : 우리는 작은이야 누가합니다. 537 00:21:23,740 --> 00:21:24,200 >> DAVID 마란 : 그렇습니다. 538 00:21:24,200 --> 00:21:24,940 우리는 병합 할. 539 00:21:24,940 --> 00:21:27,590 우리는 병합하는 데 사용거야 공간 당신들이있어, 비록에 540 00:21:27,590 --> 00:21:30,250 분명히 이미 정렬, 우리는거야 동일한 알고리즘을 따르십시오. 541 00:21:30,250 --> 00:21:31,560 그럼 누가 다시 먼저 간다? 542 00:21:31,560 --> 00:21:35,720 3 그래서, 다음 7. 543 00:21:35,720 --> 00:21:38,570 지금은 마이크가 간다 이 녀석까지 OK? 544 00:21:38,570 --> 00:21:43,590 >> SPEAKER 3 : 그래서의 오른쪽 절반 해요 왼쪽 절반, 내 N 이하이다 545 00:21:43,590 --> 00:21:45,048 1, 그래서 난 그냥 통과 할거야 - 546 00:21:45,048 --> 00:21:46,380 >> DAVID 마란 : 좋은. 547 00:21:46,380 --> 00:21:49,450 >> 스피커 4 : 내가의 오른쪽 절반 해요 오른쪽 오른쪽 절반의 절반, 그리고 난 548 00:21:49,450 --> 00:21:51,740 또한 한 사람, 난 그렇게 반환 할 것. 549 00:21:51,740 --> 00:21:52,990 그래서 지금 우리가 병합합니다. 550 00:21:52,990 --> 00:21:55,140 551 00:21:55,140 --> 00:21:56,150 >> 스피커 3 : 그래서 우리가 돌​​아갑니다. 552 00:21:56,150 --> 00:21:57,160 >> DAVID 마란 : 그래서 당신은 뒤로 이동합니다. 553 00:21:57,160 --> 00:21:59,200 그래서 5는 8 번째 간다. 554 00:21:59,200 --> 00:22:01,240 는 이제 청중, 우리가 지금 되감기 할 단계 555 00:22:01,240 --> 00:22:02,200 우리의 마음에서 등을 맞댄? 556 00:22:02,200 --> 00:22:02,940 >> 대상 : 병합합니다. 557 00:22:02,940 --> 00:22:07,270 >> DAVID 마란 : 병합 왼쪽 부분과 오른쪽 원래 왼쪽 절반의 절반. 558 00:22:07,270 --> 00:22:08,840 그래서 지금 - 559 00:22:08,840 --> 00:22:10,520 다만,이 명확하게하기 약간의 공간을 560 00:22:10,520 --> 00:22:11,690 당신 사이에 두 사람. 561 00:22:11,690 --> 00:22:13,800 이제 두 목록의 즉, 왼쪽과 오른쪽. 562 00:22:13,800 --> 00:22:18,320 그렇다면 우리는 이제 너희들은 병합합니까 좌석 앞줄 다시? 563 00:22:18,320 --> 00:22:19,600 >> 3 먼저갑니다. 564 00:22:19,600 --> 00:22:20,850 그런 다음 5, 분명히. 565 00:22:20,850 --> 00:22:23,110 566 00:22:23,110 --> 00:22:27,330 그런 다음 7, 현재 8. 567 00:22:27,330 --> 00:22:28,710 OK, 이제 우리는? 568 00:22:28,710 --> 00:22:29,650 >> 대상 : 수행되지 않습니다. 569 00:22:29,650 --> 00:22:32,440 >> DAVID 마란 : 수행하지 않음 때문에, 물론, 나머지 한 단계가있다. 570 00:22:32,440 --> 00:22:35,720 그러나 다시, 이유는이를 사용하고 있습니다 "당신의 마음에있는 되감기"와 같은 용어 571 00:22:35,720 --> 00:22:37,160 그 정말 때문이다 무슨 일이 일어나고. 572 00:22:37,160 --> 00:22:39,610 우리는이 모든 단계거야 그러나 우리는을 위해 일시​​ 중지의 일종입니다 573 00:22:39,610 --> 00:22:42,480 에 순간 잠수 깊이 알고리즘 잠시 동안 일시 중지, 574 00:22:42,480 --> 00:22:45,840 알고리즘에 깊은 다이빙, 그리고 이제 우리는 우리의 되감기의 정렬이 575 00:22:45,840 --> 00:22:49,430 마음은 이러한 레이어를 모두 취소 우리는 일종의 보류했다고. 576 00:22:49,430 --> 00:22:51,790 >> 그래서 지금 우리의 크기는 4 개의 목록이 있습니다. 577 00:22:51,790 --> 00:22:54,790 너희들이 마지막으로 한 번 일어 서서 수 있다면 그리고 여기에 공간의 비트를 만들 578 00:22:54,790 --> 00:22:57,230 이 왼쪽인지 명확하게 원래의 절반 579 00:22:57,230 --> 00:22:58,620 원래의 오른쪽 절반. 580 00:22:58,620 --> 00:23:01,060 누가 첫 번째 숫자이야 우리 뒤로 당길 필요? 581 00:23:01,060 --> 00:23:01,870 물론 미셸. 582 00:23:01,870 --> 00:23:03,230 >> 그래서 우리는 여기에 미셸을 넣어. 583 00:23:03,230 --> 00:23:05,080 그리고 누가 숫자 2가? 584 00:23:05,080 --> 00:23:06,440 2 번 다시도 켜집니다. 585 00:23:06,440 --> 00:23:07,800 3 번? 586 00:23:07,800 --> 00:23:08,510 우수. 587 00:23:08,510 --> 00:23:16,570 4 번, 5 번, 6 번, 7 번과 8 번. 588 00:23:16,570 --> 00:23:18,850 >> OK, 그래서 많은 느낌 단계, 확실히. 589 00:23:18,850 --> 00:23:22,390 하지만 지금 우리가 확인할 수없는 경우에 보자 일종의 직관적으로 그이의 590 00:23:22,390 --> 00:23:26,190 근본적으로 알고리즘, 특히 등 여기서 n은 우리가 보았 듯이, 정말 큰 가져옵니다 591 00:23:26,190 --> 00:23:29,170 애니메이션과입니다 근본적으로 빨리. 592 00:23:29,170 --> 00:23:33,400 그래서 나는 최악의,이 알고리즘을 주장 최선의 경우 경우에도, 593 00:23:33,400 --> 00:23:36,160 n 번 로그 N 큰 O입니다. 594 00:23:36,160 --> 00:23:39,160 즉, 이것의 일부 측면이있다 N의 조치를 취하고 있지만, 알고리즘 595 00:23:39,160 --> 00:23:43,110 또 다른 측면은 어딘가에있다 해당 반복 그 반복, 그 596 00:23:43,110 --> 00:23:44,410 로그 n 개의 단계를 수행합니다. 597 00:23:44,410 --> 00:23:49,154 우리는 어떤 사람에 대한 우리의 손가락을 넣어 수 있습니다 두 개의 숫자를 언급하는? 598 00:23:49,154 --> 00:23:51,320 그럼 여기서 - 599 00:23:51,320 --> 00:23:54,160 마이크는 어디로 갔지? 600 00:23:54,160 --> 00:23:58,660 >> 스피커 1 : 로그 N 수 있을까 두 가지로 우리를 파괴 - 601 00:23:58,660 --> 00:23:59,630 기본적으로 두 가지로 나누어. 602 00:23:59,630 --> 00:24:00,120 >> DAVID 마란 : 그렇습니다. 603 00:24:00,120 --> 00:24:03,000 우리는 따라서 어떤 알고리즘에서 볼 때마다 지금까지이 패턴이있었습니다 604 00:24:03,000 --> 00:24:04,200 , 분할 분할, 분할. 605 00:24:04,200 --> 00:24:05,700 그리고 그것은 일반적으로 감소거야 뭔가에 606 00:24:05,700 --> 00:24:07,100 로그, 로그 자료 2. 607 00:24:07,100 --> 00:24:10,180 하지만 정말 아무것도 될 수 하지만베이스 2를 기록합니다. 608 00:24:10,180 --> 00:24:11,330 >> 이제 N 어떨까요? 609 00:24:11,330 --> 00:24:14,550 나는 우리가 어떤 종류의 당신을 나눈 것을 볼 수 있습니다 사람들은 - 당신을 나눈, 당신을 분할 610 00:24:14,550 --> 00:24:15,910 당신을 나눈, 당신을 나눈 값입니다. 611 00:24:15,910 --> 00:24:18,760 끝은 어디에서 오는가? 612 00:24:18,760 --> 00:24:19,810 >> 그래서 합병이다. 613 00:24:19,810 --> 00:24:20,610 그것에 대해 있기 때문에 생각합니다. 614 00:24:20,610 --> 00:24:25,420 당신은 함께 8 명이 병합 할 때 그들 중 절반은 4의 집합입니다 빼앗아 615 00:24:25,420 --> 00:24:27,770 나머지 절반은 다른 수 있습니다 4 개의 설정, 당신은 어떻게 가야합니까 616 00:24:27,770 --> 00:24:28,820 병합을 수행 어떻습니까? 617 00:24:28,820 --> 00:24:30,830 그럼, 너희들은 그것을했다 상당히 직관적. 618 00:24:30,830 --> 00:24:34,140 >> 내가 대신 그것을 한 경우에 조금 더 질서에 제가 지적 할 수 619 00:24:34,140 --> 00:24:38,090 내 왼쪽에 첫 번째 왼쪽 사람 손, 왼쪽 사람을 지적 620 00:24:38,090 --> 00:24:42,080 그 오른손 절반, 그리고 다만 이후 걸었다 621 00:24:42,080 --> 00:24:46,990 작은 요소를 가리키는리스트 때마다 내 손가락을 통해 이동하고 622 00:24:46,990 --> 00:24:48,970 이상으로 목록을 통해 필요. 623 00:24:48,970 --> 00:24:51,890 그러나이 병합에 대한 열쇠 프로세스 나는이 쌍을 비교 해요입니다 624 00:24:51,890 --> 00:24:53,460 요소. 625 00:24:53,460 --> 00:24:57,270 오른쪽 절반에서와 왼쪽에서 반 한 번 되돌아 적이 있어요. 626 00:24:57,270 --> 00:25:00,570 >> 따라서 병합 자체가 복용 더 이상의 단계 n보다가 없습니다. 627 00:25:00,570 --> 00:25:03,250 얼마나 많은 시간을 내가 가지고 있었다 병합 그렇게하려면? 628 00:25:03,250 --> 00:25:07,150 음, n보다 더 아니, 우리 단지 최종 병​​합하여 해당 보았다. 629 00:25:07,150 --> 00:25:13,120 그리고 당신이 걸립니다 뭔가를 할 경우 , N 단계를 n 번, 또는 그 반대의 경우도 마찬가지 로그인 630 00:25:13,120 --> 00:25:15,210 그것은 우리 n 번 로그 N 줄거야. 631 00:25:15,210 --> 00:25:16,310 >> 그리고 왜이 더 나은 무엇입니까? 632 00:25:16,310 --> 00:25:19,600 음, 우리는 이미 해당 로그를 알고있는 경우 여기서 n은 n보다 낫다 - 권리? 633 00:25:19,600 --> 00:25:22,590 우리는 이진 검색에서 전화 번호부를 보았다 예를 들어, 로그 n을 분명히했다 634 00:25:22,590 --> 00:25:23,760 선형보다. 635 00:25:23,760 --> 00:25:28,420 의미 n 번 로그 N은 그래서 다른 N 시간보다 확실히 더 636 00:25:28,420 --> 00:25:30,390 N, AKA N 제곱. 637 00:25:30,390 --> 00:25:32,400 그리고 우리가 궁극적으로 어떤 느낌이다. 638 00:25:32,400 --> 00:25:34,928 >> 박수 너무 큰 둥근 경우 우리는이 사람 들어, 수 있습니다. 639 00:25:34,928 --> 00:25:38,920 >> [박수] 640 00:25:38,920 --> 00:25:41,550 >> DAVID 마란 : 그리고 당신의 이별 선물 - 당신은 번호를 유지할 수 있습니다 641 00:25:41,550 --> 00:25:44,010 당신이 좋아하면 것인지. 642 00:25:44,010 --> 00:25:45,620 그리고 당신의 이별 선물, 평소와 같이. 643 00:25:45,620 --> 00:25:47,290 아, 그리고 우리는 당신을 보낼 것이다 영상, 미셸. 644 00:25:47,290 --> 00:25:48,343 감사합니다. 645 00:25:48,343 --> 00:25:49,250 좋아. 646 00:25:49,250 --> 00:25:50,400 스트레스 볼에 자신을 도와줍니다. 647 00:25:50,400 --> 00:25:54,110 >> 그리고 내가 그 동안 끌어 보자 제안하는 우리의 친구 롭 보덴 648 00:25:54,110 --> 00:25:59,520 이것에 약간 다른 관점, 당신이 생각 할 수 있기 때문에 649 00:25:59,520 --> 00:26:01,280 다소에서 일어나는 단계 다른 방법입니다. 650 00:26:01,280 --> 00:26:04,750 약 롭은 무엇에 대한 사실, 셋업 우리를 보여 것은 우리가했습니다 가정 651 00:26:04,750 --> 00:26:09,030 이미 분할까지의 수행 8 개의 작은 목록으로 큰 목록 652 00:26:09,030 --> 00:26:10,570 크기 1의 각. 653 00:26:10,570 --> 00:26:13,350 >> 그래서 우리는 의사에게 변경하고 약간은에 이곳에 정렬하려면 654 00:26:13,350 --> 00:26:15,320 작품을 병합하는 방법의 핵심 아이디어. 655 00:26:15,320 --> 00:26:17,600 그러나의 실행 시간 수행 할 작업에 대해 그는의 여전히 656 00:26:17,600 --> 00:26:19,110 동일 할 것. 657 00:26:19,110 --> 00:26:23,540 그리고 또, 여기에 셋업은 그가 점이다 사이즈 1을 8로 시작. 658 00:26:23,540 --> 00:26:27,730 그래서 당신은 그가의 부분을 놓친 실제로 로그 N 로그 N 로그 N 수행 659 00:26:27,730 --> 00:26:31,205 입력의 분할. 660 00:26:31,205 --> 00:26:32,120 >> [동영상 재생] 661 00:26:32,120 --> 00:26:33,615 >> 단계 하나는 - 그건. 662 00:26:33,615 --> 00:26:38,270 반복 두 번째 단계에 대한 목록의 쌍을 병합합니다. 663 00:26:38,270 --> 00:26:39,210 >> DAVID 마란 : 흠. 664 00:26:39,210 --> 00:26:41,270 오디오 만이오고있다 내 컴퓨터 밖으로. 665 00:26:41,270 --> 00:26:42,520 의는 다시 시도 할 수 있습니다. 666 00:26:42,520 --> 00:26:45,330 667 00:26:45,330 --> 00:26:48,310 >> - 그냥 임의로 어느 선택 - 지금 우리는 네 개의 목록이 있습니다. 668 00:26:48,310 --> 00:26:51,590 669 00:26:51,590 --> 00:26:52,120 전에 알아보십시오. 670 00:26:52,120 --> 00:26:53,040 >> DAVID 마란 : 거기 우리는 간다. 671 00:26:53,040 --> 00:27:00,510 >> - 병합 108 15 우리는 끝 최대 목록 15, 108. 672 00:27:00,510 --> 00:27:07,170 우리는 50 4 병합 4, 50로 끝. 673 00:27:07,170 --> 00:27:12,990 우리는, 8, 42 병합 8, 42에 결국. 674 00:27:12,990 --> 00:27:19,970 그리고 우리는, 23, 16 병합 16와 23을 끝낸다. 675 00:27:19,970 --> 00:27:23,270 >> 지금 우리의 모든 목록의 크기는 2의이다. 676 00:27:23,270 --> 00:27:26,690 주의 그 각각의 네 개의 목록이 정렬됩니다. 677 00:27:26,690 --> 00:27:29,450 그래서 우리는 병합을 시작할 수 있습니다 다시리스트의 쌍. 678 00:27:29,450 --> 00:27:38,420 우리는 15 108 4 50 병합 먼저, 다음 15 일 4을 679 00:27:38,420 --> 00:27:41,500 50 후 108. 680 00:27:41,500 --> 00:27:50,610 , 23 8, 42, 16 병합, 우리는 첫째로 포획 8 일 후 16 일 후 23 일 681 00:27:50,610 --> 00:27:52,700 다음 42. 682 00:27:52,700 --> 00:27:57,600 >> 그래서 지금 우리의 크기는 단지 두 개의 목록을 가지고 4 정렬 각. 683 00:27:57,600 --> 00:28:01,170 이제 우리는 이러한 두 목록을 병합합니다. 684 00:28:01,170 --> 00:28:11,835 첫째, 우리는 4 받아, 우리는을 8, 우리는 그 16 다음 15을 685 00:28:11,835 --> 00:28:19,456 그런 다음 다음 다음 23, 42, 50, 108. 686 00:28:19,456 --> 00:28:19,872 >> [END 동영상 재생] 687 00:28:19,872 --> 00:28:23,430 >> DAVID 마란 : 다시 말하지만, 통지, 그는 결코 주어진 컵 두 개 이상의 시간을 감동 688 00:28:23,430 --> 00:28:24,860 그 이상 진행 후. 689 00:28:24,860 --> 00:28:26,200 그래서 그는 반복 결코. 690 00:28:26,200 --> 00:28:29,850 그래서 그는 항상 옆으로 움직입니다 우리가 N을 가지고 어디 때문입니다. 691 00:28:29,850 --> 00:28:33,290 >> 왜 내가 하나의 애니메이션을 당겨하지 우리는 앞에서 살펴본하지만,이 시간 692 00:28:33,290 --> 00:28:35,110 병합 정렬에만 초점을. 693 00:28:35,110 --> 00:28:38,030 내가 가서 확대하자 이 여기에있다. 694 00:28:38,030 --> 00:28:42,530 첫째 날은 임의의 입력을 선택할 수 있습니다, 이를 확대하고, 당신은 볼의 정렬 할 수 있습니다 695 00:28:42,530 --> 00:28:46,600 우리는 부여 이전에 걸린 것을 병합 정렬은 실제로하고있다. 696 00:28:46,600 --> 00:28:50,330 >> 당신은 또는 이러한 반쪽을 얻을 수 있도록 통지 이러한 분기 또는이 8 분 697 00:28:50,330 --> 00:28:53,140 문제가 갑자기 좋은 모양을 가지고 시작합니다. 698 00:28:53,140 --> 00:28:57,070 그리고 마지막으로, 당신은에서 볼 끝까지 그 빵, 699 00:28:57,070 --> 00:28:58,860 모든 것을 함께 병합됩니다. 700 00:28:58,860 --> 00:29:01,690 >> 그래서 이건 그냥 세 가지입니다 같은 생각을합니다. 701 00:29:01,690 --> 00:29:05,980 하지만 단지 분할과 같은 키 통찰력, 그리고, 첫 번째 클래스 정복 702 00:29:05,980 --> 00:29:10,640 우리는 어떻게 든 분할하기로 결정했다 에 큰 뭔가에 문제가 703 00:29:10,640 --> 00:29:14,760 정신 동일 뭔가 정렬, 하지만, 더 작고 더 작은 704 00:29:14,760 --> 00:29:15,660 작고. 705 00:29:15,660 --> 00:29:18,420 >> 생각의 정렬 이제 또 다른 재미있는 방법 이들에 대해, 비록 그것이 아닙니다 706 00:29:18,420 --> 00:29:20,520 당신에게 동일한 직관적 인 줄거야 이해이며, 707 00:29:20,520 --> 00:29:21,640 다음 애니메이션. 708 00:29:21,640 --> 00:29:25,400 그래서 함께 넣어 비디오 사람입니다 서로 다른 연결 709 00:29:25,400 --> 00:29:29,970 에 대한 다양한 작업과 소리 삽입 정렬, 병합 정렬을 위해, 그리고 710 00:29:29,970 --> 00:29:31,150 다른 사람의 커플. 711 00:29:31,150 --> 00:29:32,330 그래서 순간에, 나는 플레이를 칠거야. 712 00:29:32,330 --> 00:29:33,600 그것은 긴 약 1 분입니다. 713 00:29:33,600 --> 00:29:37,410 그리고 당신은 여전히​​ 볼 수 있지만 패턴은, 당신이 할 수있는이 시간을 벌어 714 00:29:37,410 --> 00:29:41,420 이러한 알고리즘이 얼마나도 듣고 다르게와 수행 715 00:29:41,420 --> 00:29:43,950 약간 다른 패턴. 716 00:29:43,950 --> 00:29:45,830 >> 이 삽입 일종이다. 717 00:29:45,830 --> 00:29:50,400 >> [톤 재생] 718 00:29:50,400 --> 00:29:52,400 >> DAVID 마란 : 그것은 다시 시도합니다 각 요소를 삽입 719 00:29:52,400 --> 00:29:52,900 자신이 속한 곳으로. 720 00:29:52,900 --> 00:29:54,628 이 버블 정렬됩니다. 721 00:29:54,628 --> 00:30:10,097 >> [톤 재생] 722 00:30:10,097 --> 00:30:13,630 >> DAVID 마란 : 그리고 당신은 느낌으로 정렬 할 수 있습니다 상대적으로 적은이 어떤지 작업 723 00:30:13,630 --> 00:30:15,834 각 단계에. 724 00:30:15,834 --> 00:30:20,470 이 지루함이 같은 소리 것입니다. 725 00:30:20,470 --> 00:30:21,472 >> [톤 재생] 726 00:30:21,472 --> 00:30:25,222 >> DAVID 마란 :이 선택 일종이다, 우리가 우리가 원하는 요소를 선택 위치 727 00:30:25,222 --> 00:30:28,845 다시 겪고 다시하고 다시 그리고 처음에 그것을 넣어. 728 00:30:28,845 --> 00:30:37,674 >> [톤 재생] 729 00:30:37,674 --> 00:30:43,970 >> DAVID 마란 :이 병합 일종이다, 그 당신은 정말 느낌을 시작할 수 있습니다. 730 00:30:43,970 --> 00:30:51,810 >> [톤 재생] 731 00:30:51,810 --> 00:30:54,770 >> [웃음] 732 00:30:54,770 --> 00:30:58,395 >> DAVID 마란 : 그놈이라는 것을 우리가보고되지 않은 종류. 733 00:30:58,395 --> 00:31:13,630 >> [톤 재생] 734 00:31:13,630 --> 00:31:17,910 >> DAVID 마란 : 그래서, 지금, 어디 보자 당신이 희망으로 그대로 정신 735 00:31:17,910 --> 00:31:21,110 조금을 풀 수 있다면 음악, 여기에 수학의 비트. 736 00:31:21,110 --> 00:31:24,850 그래서 우리가 할 수있는 네 번째 방법이 그것이 무엇을 의미하는지에 대해 생각 737 00:31:24,850 --> 00:31:29,210 빠른 것보다하는 기능 우리는 전에 본 적이. 738 00:31:29,210 --> 00:31:32,470 그리고 당신은에서 코스에서오고 있다면 수학 배경, 당신 739 00:31:32,470 --> 00:31:36,030 실제로 이미 아마 알고 당신 이 기술에 대한 용어를 때리고 할 수 있습니다 - 740 00:31:36,030 --> 00:31:40,400 즉 재귀 함수 즉, 어떻게 든 자신을 호출합니다. 741 00:31:40,400 --> 00:31:44,780 >> 그리고 또, 그 병합 정렬을 불러 의사는 의미에서 재귀 적이었다 742 00:31:44,780 --> 00:31:48,460 이 병합 정렬의 단계 중 하나 일종의 전화를했다 - 743 00:31:48,460 --> 00:31:49,740 즉, 그 자체입니다. 744 00:31:49,740 --> 00:31:52,480 그러나 다행히도, 때문에 우리는 계속 , 정렬을 호출, 또는 정렬 병합 745 00:31:52,480 --> 00:31:55,880 특히,에 더 작은 작고 목록, 우리는 결국 746 00:31:55,880 --> 00:32:00,005 우리가 전화 할게 무엇을 저점으로 감사 기본 케이스, 하드 코딩 된 경우 그 747 00:32:00,005 --> 00:32:04,270 목록이 작 으면 미만 말했다 이 경우, 다만 즉시 반환. 748 00:32:04,270 --> 00:32:07,550 우리가 특별한 경우를 가지고 있지 않은 경우, 알고리즘은 바닥, 절대로 749 00:32:07,550 --> 00:32:11,010 당신은 참으로 얻을 것이다 정말 영원히 무한 루프. 750 00:32:11,010 --> 00:32:14,330 >> 그러나 우리가 지금두고 싶어한다고 가정 이에 대한 몇 가지 숫자는 다시 N을 사용하여 751 00:32:14,330 --> 00:32:15,660 입력의 크기. 752 00:32:15,660 --> 00:32:18,680 그리고 어떻게, 당신에게 물어보고 싶은게 에 포함 된 총 시간 753 00:32:18,680 --> 00:32:19,800 병합 정렬을 실행? 754 00:32:19,800 --> 00:32:22,960 또는 더 일반적으로, 무엇을 시간에 그것의 비용? 755 00:32:22,960 --> 00:32:24,730 >> 잘은 것을을 측정하기 매​​우 쉽습니다. 756 00:32:24,730 --> 00:32:29,010 n은 2보다 작은 경우, 시간 관련 n 개의 요소를 정렬에서, 757 00:32:29,010 --> 00:32:30,480 n은 2이고, 0입니다. 758 00:32:30,480 --> 00:32:31,410 우리는 단지 반환하기 때문입니다. 759 00:32:31,410 --> 00:32:32,510 수행 할 작업이 없습니다. 760 00:32:32,510 --> 00:32:35,660 지금 틀림없이, 아마의 한 단계 또는 두 개의 금액을 계산하는 단계 761 00:32:35,660 --> 00:32:38,420 작동하지만, 그것은 0에 가까운만큼이야 난 그냥 아무 작업을하지 말거야 762 00:32:38,420 --> 00:32:40,940 목록이 너무 작은 경우 필요 재미 수 있습니다. 763 00:32:40,940 --> 00:32:42,580 >> 하지만이 사건은 흥미 롭다. 764 00:32:42,580 --> 00:32:47,320 재귀 경우의 지점이었다 다른 말한 의사, 정렬 765 00:32:47,320 --> 00:32:52,000 왼쪽 절반은 오른쪽으로 정렬 반 두 반을 병합합니다. 766 00:32:52,000 --> 00:32:55,530 지금 왜 이런 표현한다 그 비용을 나타냅니다? 767 00:32:55,530 --> 00:32:58,690 음, N의 T 그냥 의미 N 요소를 정렬하는 시간입니다. 768 00:32:58,690 --> 00:33:03,070 다음의 오른쪽에 거기에 등호 (=), N의 T가 분할 769 00:33:03,070 --> 00:33:06,600 2 무엇의 비용을 언급하고있다? 770 00:33:06,600 --> 00:33:07,570 왼쪽 절반을 정렬. 771 00:33:07,570 --> 00:33:10,990 2로 나누어 n의 또 다른 T는 아마에 대한 비용을 참조 772 00:33:10,990 --> 00:33:12,390 오른쪽 절반을 정렬합니다. 773 00:33:12,390 --> 00:33:14,590 >> 그리고 플러스 N? 774 00:33:14,590 --> 00:33:15,420 병합됩니다. 775 00:33:15,420 --> 00:33:19,120 때문에 두 목록 중 하나가있는 경우 크기 2에 n과 다른 크기의 N 776 00:33:19,120 --> 00:33:22,580 2 이상, 당신은 기본적으로 터치해야 다만 롭 같이 이러한 요소 각각 777 00:33:22,580 --> 00:33:24,990 컵의 각 감동, 그냥 우리의 각각 지적 778 00:33:24,990 --> 00:33:26,310 무대에 자원 봉사자. 779 00:33:26,310 --> 00:33:28,790 그래서 여기서 n은 병합의 비용입니다. 780 00:33:28,790 --> 00:33:31,780 >> 지금 불행히도,이 수식 자체는 재귀도 있습니다. 781 00:33:31,780 --> 00:33:36,390 N 인 경우 그렇다면이 말, 질문을 16 경우 단계 16 개 사람들이의 782 00:33:36,390 --> 00:33:40,670 또는 비디오 16 컵, 얼마나 많은 총 단계는 그들을 정렬 걸립니까 783 00:33:40,670 --> 00:33:41,550 병합 정렬 있나요? 784 00:33:41,550 --> 00:33:45,790 그것은 실제로 확실한 대답이 아니다 지금 당신은 일종의해야하기 때문에 785 00:33:45,790 --> 00:33:48,500 재귀 적으로이 수식을 응답합니다. 786 00:33:48,500 --> 00:33:51,190 >> 내가 제안하자 때문에 즉, OK의 우리는 다음과 같은 작업을 수행합니다. 787 00:33:51,190 --> 00:33:56,670 16 명이 정렬하거나 참여 시간 16 컵 표시 될 것입니다 788 00:33:56,670 --> 00:33:58,020 일반적으로 16 T로. 789 00:33:58,020 --> 00:34:01,400 그러나 그것은에 따라, 동등한 우리 이전 공식의 2 배 금액 790 00:34:01,400 --> 00:34:04,780 시간이 정렬됩니다 8 컵 플러스 16. 791 00:34:04,780 --> 00:34:08,590 그리고 또, 플러스 16, 병합 할 시간입니다 8의 두 배 T는 792 00:34:08,590 --> 00:34:10,790 왼쪽 부분과 오른쪽 절반을 정렬하는 시간. 793 00:34:10,790 --> 00:34:11,989 >> 그러나 다시, 이것은 충분하지 않습니다. 794 00:34:11,989 --> 00:34:13,210 우리는 깊이에서 다이빙을해야합니다. 795 00:34:13,210 --> 00:34:16,409 이것은 우리가 답을해야한다는 것을 의미 질문 8 T는 무엇입니까? 796 00:34:16,409 --> 00:34:19,610 물론 8 T는 단지 2 4 플러스 8 배 T. 797 00:34:19,610 --> 00:34:20,520 음, 4 T 무엇입니까? 798 00:34:20,520 --> 00:34:23,780 4 T 2 플러스 4 단 2 회 T입니다. 799 00:34:23,780 --> 00:34:25,489 음, 2의 T는 무엇입니까? 800 00:34:25,489 --> 00:34:29,030 2 T 1 플러스 2 단 2 회 T입니다. 801 00:34:29,030 --> 00:34:31,940 >> 그리고 또, 우리는 점점 친절 이 사이클에 갇혀있다. 802 00:34:31,940 --> 00:34:34,790 그러나 약 칠이야 기본 케이스 소위. 803 00:34:34,790 --> 00:34:37,310 1 T 무엇 때문에, 우리는 주장 했는가? 804 00:34:37,310 --> 00:34:37,810 0. 805 00:34:37,810 --> 00:34:39,730 이제 마지막으로, 우리는 거꾸로 작업 할 수 있습니다. 806 00:34:39,730 --> 00:34:44,290 >> 1 T가 0 인 경우에, 나는 지금 하나 되돌아 갈 수 있습니다 여기이 사람에게 줄 내가 할 수 807 00:34:44,290 --> 00:34:46,330 1 T 0에 연결합니다. 808 00:34:46,330 --> 00:34:51,770 그래서 의미는, 2 번 제로와 동일 그렇지 않으면 0, 플러스 2로 알려져 있습니다. 809 00:34:51,770 --> 00:34:53,739 그리고 그 전체 표현식은 2입니다. 810 00:34:53,739 --> 00:34:58,740 >> 나는 그 대답 2의 T를 취할 경우에 지금 2, 중간 선, T에 연결 811 00:34:58,740 --> 00:35:02,740 4, 그 날의 2 배를 제공 2 더하기 4, 8, 그렇게. 812 00:35:02,740 --> 00:35:07,080 나는 그 이전에 8 연결하는 경우 라인은, 그 날의 2 배 8, 16을 제공합니다. 813 00:35:07,080 --> 00:35:12,470 그리고 우리는 그와 함께이 계속하는 경우 24, 16 추가, 우리는 마침내을 814 00:35:12,470 --> 00:35:13,820 64 값입니다. 815 00:35:13,820 --> 00:35:18,480 >> 지금의 그 자체의 종류가 말하는 것을 N 표기법에 아무것도, 816 00:35:18,480 --> 00:35:20,700 큰 O, 우리가 잘하고, 오메가 에 대해 얘기. 817 00:35:20,700 --> 00:35:24,890 그러나 64 참으로 밝혀 16, 입력의 크기, 818 00:35:24,890 --> 00:35:27,110 16베이스 2를 기록합니다. 819 00:35:27,110 --> 00:35:30,200 그리고 이것은, 조금 익숙하지 않은 경우 단지 다시 생각하고, 다시 올 것이다 820 00:35:30,200 --> 00:35:30,700 당신에게 결국. 821 00:35:30,700 --> 00:35:33,775 이 로그 기본 2 인 경우, 2처럼 무엇을 당신에게 16 제공에 제기? 822 00:35:33,775 --> 00:35:36,380 아, 네, 그래서 그것을 16 배 4입니다. 823 00:35:36,380 --> 00:35:39,380 >> 그리고 또, 그것은 큰 문제가 아니다이 경우 흐릿한 기억의 종류는 지금이다. 824 00:35:39,380 --> 00:35:43,720 하지만 지금은 믿음에 걸릴 16 로그 16 64입니다. 825 00:35:43,720 --> 00:35:46,590 그리고 실제로,이 간단한 정신을 가진 확인, 우리는 확인했습니다 - 826 00:35:46,590 --> 00:35:48,250 하지만 공식적으로 입증되지 - 827 00:35:48,250 --> 00:35:52,800 그 병합의 실행 시간 종류는 참으로 n 개를 기록합니다. 828 00:35:52,800 --> 00:35:53,790 >> 그렇게 나쁘지 않다. 829 00:35:53,790 --> 00:35:57,260 그것은보다 확실히 낫다 우리가 지금까지 볼 수있어 한 알고리즘 830 00:35:57,260 --> 00:36:00,710 우리가 활용했기 때문에 그것은 하나의 재귀이라는 기술. 831 00:36:00,710 --> 00:36:03,880 즉,보다하지만, 더 재미있는 분열과 정복의 개념. 832 00:36:03,880 --> 00:36:07,460 다시 말하지만, 정말 주 0 물건이 지금도으로 되풀이된다 833 00:36:07,460 --> 00:36:08,740 더 강력한 방법입니다. 834 00:36:08,740 --> 00:36:11,750 >> 이제 재미 좀 운동, 당신이 한 경우 이런 짓을하지 않습니다 - 그리고 아마 835 00:36:11,750 --> 00:36:14,660 하지 않았을 때문에 정상의 종류 사람들은 이렇게 생각하지 않습니다. 836 00:36:14,660 --> 00:36:20,650 하지만 google.com에 그리고 만약 가면 내가 뭔가를 배우고 싶다 837 00:36:20,650 --> 00:36:22,356 재귀 입력합니다. 838 00:36:22,356 --> 00:36:25,106 839 00:36:25,106 --> 00:36:29,058 >> [웃음] 840 00:36:29,058 --> 00:36:32,030 [더 웃음] 841 00:36:32,030 --> 00:36:33,385 DAVID 마란 : 나쁜 농담이 서서히 확산. 842 00:36:33,385 --> 00:36:34,450 [웃음] 843 00:36:34,450 --> 00:36:36,970 DAVID 마란 : 그냥 경우가있다. 844 00:36:36,970 --> 00:36:38,710 나는 그것을 잘못 철자하지 않았다, 그리고 농담이있다. 845 00:36:38,710 --> 00:36:40,810 좋아. 846 00:36:40,810 --> 00:36:42,950 당신 옆에있는 사람에게 그것을 설명하는 경우 꽤 아직 클릭하지 않았습니다. 847 00:36:42,950 --> 00:36:47,650 그러나 재귀 더 일반적 의미 호출하는 함수의 과정 848 00:36:47,650 --> 00:36:51,430 자체, 또는 좀 더 일반적으로 나누어 할 수있는 일에 문제가 849 00:36:51,430 --> 00:36:56,220 동일 해결하여 조금씩 해결 대표적인 문제. 850 00:36:56,220 --> 00:36:58,400 >> 음,하자 변경 기어 단지 순간을 위해. 851 00:36:58,400 --> 00:37:00,840 우리는 특정 cliffhangers를 종료하려면 이렇게 설정을 시작하자 852 00:37:00,840 --> 00:37:05,870 단, 몇 분, 아주 간단한 생각에서 - 853 00:37:05,870 --> 00:37:07,620 두 요소를 교환의 오른쪽? 854 00:37:07,620 --> 00:37:10,040 모든 알고리즘 우리는 봤는데 지난 몇 이야기 855 00:37:10,040 --> 00:37:12,420 강의 일부를 포함 교환의 일종. 856 00:37:12,420 --> 00:37:14,630 오늘 그것은 그들을 점점에 의해 시각화 한 를 자신의 의자 밖으로 857 00:37:14,630 --> 00:37:18,570 걷고 있지만, 코드에서, 우리는 것 하나의 배열에서 요소를 가지고 858 00:37:18,570 --> 00:37:20,370 다른에 풍덩 그것. 859 00:37:20,370 --> 00:37:21,880 >> 우리는이 일에 대해 어떻게 가야합니까? 860 00:37:21,880 --> 00:37:24,850 글쎄, 내가 가서 작성할 수 여기에 빠른 프로그램입니다. 861 00:37:24,850 --> 00:37:31,600 내가 가서 할거야 이 다음과 같이. 862 00:37:31,600 --> 00:37:33,910 자,이 호출 - 863 00:37:33,910 --> 00:37:38,070 우리는이 하나를 호출하기 위해 무엇을 할 수 있습니까? 864 00:37:38,070 --> 00:37:38,650 >> 사실, 아니. 865 00:37:38,650 --> 00:37:39,420 나 되감기를 할 수 있습니다. 866 00:37:39,420 --> 00:37:41,220 난 그렇게하고 싶지 않아 아직 클리프 행어. 867 00:37:41,220 --> 00:37:42,270 그것은 재미를 망칠 것입니다. 868 00:37:42,270 --> 00:37:43,600 대신이 작업을 수행하자. 869 00:37:43,600 --> 00:37:47,430 >> 조금을 작성한다고 가정 프로그램 바로 지금이 포용 870 00:37:47,430 --> 00:37:48,700 재귀의 생각. 871 00:37:48,700 --> 00:37:50,370 나는 어떤 종류의 거기에 앞서 자신을 얻었다. 872 00:37:50,370 --> 00:37:51,420 나는 다음과 같은 작업을 수행 할거야. 873 00:37:51,420 --> 00:38:00,220 >> 첫째, 빠른, 표준 io.h에는, 포함한다 cs50.h.의뿐만 아니라 포함 874 00:38:00,220 --> 00:38:03,200 그리고 난 앞으로 갈거야 및 주요 int 무효를 선언 875 00:38:03,200 --> 00:38:04,360 일반적인 방법으로합니다. 876 00:38:04,360 --> 00:38:07,920 나는 파일 이름이 잘못 지어졌다 있었구나, 그래서 나 여기 너무. C 확장을 추가 할 수 877 00:38:07,920 --> 00:38:09,510 우리는 제대로 컴파일 할 수. 878 00:38:09,510 --> 00:38:10,970 이 기능을 시작합니다. 879 00:38:10,970 --> 00:38:13,290 >> 그리고 기능은 내가 꽤 쓰고 싶어요 단순히 부탁입니다 880 00:38:13,290 --> 00:38:16,210 다음 번호를 사용자가 최대 추가 그 사이의 모든 숫자 881 00:38:16,210 --> 00:38:19,920 수와 말, 0. 882 00:38:19,920 --> 00:38:22,510 그래서 일단 내가 먼저 갈거야 그리고 INT N를 선언합니다. 883 00:38:22,510 --> 00:38:24,760 그럼 몇 가지 코드를 복사하는 우리는 잠시 동안 사용했습니다. 884 00:38:24,760 --> 00:38:26,660 뭔가 사실이지만. 885 00:38:26,660 --> 00:38:28,000 나는 순간 그에게 돌아올 것입니다. 886 00:38:28,000 --> 00:38:29,010 >> 내가 무엇을 하시겠습니까? 887 00:38:29,010 --> 00:38:33,460 나는 printf는 긍정적 인 말을 할 정수하시기 바랍니다. 888 00:38:33,460 --> 00:38:36,130 그리고 난 갈거야 n은 INT을 얻는다 말한다. 889 00:38:36,130 --> 00:38:38,800 그래서 다시, 어떤 상용구 코드 우리는 전에 사용했던. 890 00:38:38,800 --> 00:38:40,810 그리고이 작업을 수행 할거야 여기서 n은 1보다 동안. 891 00:38:40,810 --> 00:38:44,120 그래서 이것은 지킬 사용자 저에게 긍정적 인 정수를 제공합니다. 892 00:38:44,120 --> 00:38:45,490 >> 지금은 다음과 같은 작업을 수행 할거야. 893 00:38:45,490 --> 00:38:51,020 나는 모든 숫자를 추가 할 N, 또는 0과 N 1 사이와, 894 00:38:51,020 --> 00:38:52,570 동등하게, 총 합계를 얻을 수 있습니다. 895 00:38:52,570 --> 00:38:55,100 그래서 큰 시그마 기호 당신이 기억 수도. 896 00:38:55,100 --> 00:38:59,050 그래서 내가 먼저 호출하여이 작업을 수행 할거야 시그마라는 함수, 897 00:38:59,050 --> 00:39:06,030 N에 전달하고, 그 때 나는 갈거야 printf의 말, 대답은 바로 거기에있다. 898 00:39:06,030 --> 00:39:08,180 >> 그래서 짧은, 내가 얻을 사용자로부터 int로. 899 00:39:08,180 --> 00:39:09,280 나는 긍정적 인 것을 보증합니다. 900 00:39:09,280 --> 00:39:12,700 나는의 변수라는 대답을 선언 거기에 int 형 및 매장 반환 901 00:39:12,700 --> 00:39:15,610 입력 n으로 전달 시그마의 값입니다. 902 00:39:15,610 --> 00:39:17,060 그리고 그 답을 인쇄합니다. 903 00:39:17,060 --> 00:39:19,550 >> 불행하게도, 시그마 소리에도 불구하고 에있을 수 있습니다 뭔가처럼 904 00:39:19,550 --> 00:39:24,040 math.h 파일 선언, 사실은 아니다. 905 00:39:24,040 --> 00:39:24,690 그래서 괜찮습니다. 906 00:39:24,690 --> 00:39:26,170 나는이에게 자신을 구현할 수 있습니다. 907 00:39:26,170 --> 00:39:29,160 I라는 함수를 구현하는거야 시그마, 그것은 걸릴 거예요 908 00:39:29,160 --> 00:39:29,900 매개 변수 - 909 00:39:29,900 --> 00:39:32,100 하자 그냥 m 전화, 단지 그래서 다릅니다. 910 00:39:32,100 --> 00:39:35,910 그리고 여기까지 내가 말할거야 m이 1보다 작 으면 잘 - 이것이다 911 00:39:35,910 --> 00:39:38,180 매우 프로그램을 재미. 912 00:39:38,180 --> 00:39:41,700 그래서 앞서 갈 건데 즉시 0을 반환합니다. 913 00:39:41,700 --> 00:39:45,920 그냥 모두를 추가하는 것은 의미가 없습니다 1 평방 미터 경우 사이의 숫자 914 00:39:45,920 --> 00:39:48,470 자체는 0 또는 음수입니다. 915 00:39:48,470 --> 00:39:50,900 >> 그리고 난 앞으로 갈거야 매우 반복적으로이 작업을 수행합니다. 916 00:39:50,900 --> 00:39:53,090 나는 구식 이런 종류의 작업을 수행 할거야 내가 먼저 갈거야 917 00:39:53,090 --> 00:39:57,150 내가 갈거야 말 0으로 합계를 선언합니다. 918 00:39:57,150 --> 00:39:59,630 그럼 내가해야 할거야 INT의 루프 - 919 00:39:59,630 --> 00:40:02,820 나 그것은 우리 일치하도록하자 배포 코드는, 그래서 당신은 복사본이 920 00:40:02,820 --> 00:40:07,500 집에서. INT 나는 최대에 1을 얻는다 나는보다 작거나 m 같습니다. 921 00:40:07,500 --> 00:40:09,430 나는 플러스 플러스. 922 00:40:09,430 --> 00:40:11,430 그리고 내부 루프에 대한이의 - 923 00:40:11,430 --> 00:40:12,440 우리는 거의 다 - 924 00:40:12,440 --> 00:40:15,810 합계는 합계에 1을 더한 가져옵니다. 925 00:40:15,810 --> 00:40:17,670 그리고 나서 합계를 반환하는거야. 926 00:40:17,670 --> 00:40:19,420 >> 그래서 빨리 이런 짓을 아주 틀림. 927 00:40:19,420 --> 00:40:22,775 그러나 다시, 주요 기능은 예쁘다 우리가했습니다 코드를 기반으로, 간단 928 00:40:22,775 --> 00:40:23,190 지금까지 기록됩니다. 929 00:40:23,190 --> 00:40:25,610 긍정적 얻기 위해 이중 루프를 사용하여 사용자로부터 int로. 930 00:40:25,610 --> 00:40:29,870 그런 다음 새 기능이 INT를 전달 N, 다시 그것을 호출 시그마했다. 931 00:40:29,870 --> 00:40:33,100 그리고 반환 값은 응답을 저장 현재 블랙 박스에서 932 00:40:33,100 --> 00:40:35,460 변수에, 시그마로 알려진 대답했다. 933 00:40:35,460 --> 00:40:36,580 나는 그것을 인쇄 할 수 있습니다. 934 00:40:36,580 --> 00:40:39,090 >> 우리가 지금 이야기를 계속하는 경우는, 시그마는 어떻게 구현? 935 00:40:39,090 --> 00:40:40,840 나는 다음과 같이 구현 제안한다. 936 00:40:40,840 --> 00:40:43,560 오류 검사 먼저, 조금 사용자가 아니라고 확인하기 위해 937 00:40:43,560 --> 00:40:46,480 나와 함께 장난 및 전달 어떤 부정 또는 0 값을 반환합니다. 938 00:40:46,480 --> 00:40:49,710 그럼 난라는 변수를 선언 요약하고 0으로 설정합니다. 939 00:40:49,710 --> 00:40:55,910 >> 지금은 내가 동등한에서 움직이기 시작 1 모든가는 길까지와 M을 포함, 940 00:40:55,910 --> 00:41:00,130 나는 모든을 포함 할 때문에 M을 통해 하나의 숫자가 포함. 941 00:41:00,130 --> 00:41:04,350 그리고 내부 루프이, 나는 그냥 할 합계는 지금​​ 무엇이든 얻을 플러스 942 00:41:04,350 --> 00:41:08,900 I의 값입니다. 943 00:41:08,900 --> 00:41:10,370 나는 더한 값입니다. 944 00:41:10,370 --> 00:41:14,090 >> 옆으로,이 보지 한 경우 전에 몇 가지 문법 설탕이있다 945 00:41:14,090 --> 00:41:14,870 이 선합니다. 946 00:41:14,870 --> 00:41:21,120 플러스 나는 같음 I이 다시 작성할 수 있습니다 단지 자신에게 몇 가지 키 입력을 저장합니다 947 00:41:21,120 --> 00:41:22,570 및 비트 쿨러를 볼 수 있습니다. 948 00:41:22,570 --> 00:41:23,140 하지만 그게 전부입니다. 949 00:41:23,140 --> 00:41:24,660 그것은 기능적으로 동일한 것입니다. 950 00:41:24,660 --> 00:41:26,710 >> 불행히도,이 코드의 아직 컴파일하지 않을. 951 00:41:26,710 --> 00:41:31,600 나는 어떻게 시그마 0을 만들 실행하는 경우 나는 화가나 것? 952 00:41:31,600 --> 00:41:33,473 무엇을 좋아하지 않는거야? 953 00:41:33,473 --> 00:41:35,740 >> 대상 : [들림]. 954 00:41:35,740 --> 00:41:37,800 >> DAVID 마란 : 그래, 난 선언하지 않았다 위쪽, 오른쪽? 최대 기능 955 00:41:37,800 --> 00:41:40,590 C는 종류의 바보 그것에 해당의 당신이 할 말 것을 수행하고, 956 00:41:40,590 --> 00:41:41,880 그 순서대로 수행해야합니다. 957 00:41:41,880 --> 00:41:45,910 여기 Enter 키를 누르면 그래서, 내가 갈거야 시그마에 대한 경고가 암시 적으로 얻을 958 00:41:45,910 --> 00:41:46,860 선언. 959 00:41:46,860 --> 00:41:48,120 >> 아, 문제가되지 않습니다. 960 00:41:48,120 --> 00:41:50,370 나는 정상까지 갈 수 있고, 내가 할 수 모든 권리, 말, 잠깐만. 961 00:41:50,370 --> 00:41:54,240 시그마 반환하는 함수입니다 INT 그것은 예상 962 00:41:54,240 --> 00:41:56,620 입력, 세미콜론 등의 INT. 963 00:41:56,620 --> 00:41:59,550 아니면 전체 기능을 넣을 수 주 위의, 그러나 일반적으로, 나는 거라고 964 00:41:59,550 --> 00:42:02,260 그것 때문에 그에 추천 항상 상단에 그렇게 기본을 가지고 좋은 965 00:42:02,260 --> 00:42:06,310 당신의 오른쪽에있는 다이빙을 알 수있는 프로그램은 먼저 주요 읽는 거지. 966 00:42:06,310 --> 00:42:07,930 >> 그래서 지금 저 화면을 취소 할 수 있습니다. 967 00:42:07,930 --> 00:42:09,330 리메이크 시그마 0. 968 00:42:09,330 --> 00:42:10,340 모든 체크 아웃 보인다. 969 00:42:10,340 --> 00:42:11,970 나 시그마 0을 실행하자. 970 00:42:11,970 --> 00:42:12,770 긍정적 간. 971 00:42:12,770 --> 00:42:15,580 나는 그것을 수를 줄 것이다 3 간단 유지합니다. 972 00:42:15,580 --> 00:42:18,710 그래서 나에게 3 주어야한다 더하기 2 더하기 1, 등등 6. 973 00:42:18,710 --> 00:42:20,750 입력, 실제로 나는 6 얻는다. 974 00:42:20,750 --> 00:42:21,820 >> 나는 더 큰 일을 할 수 있습니다 - 975 00:42:21,820 --> 00:42:24,080 50, 12, 75. 976 00:42:24,080 --> 00:42:27,690 그냥 접선으로, 내가 할거야 정말 큰처럼 어리석은 일 977 00:42:27,690 --> 00:42:30,375 수는 아, 실제로 운동하는 - 978 00:42:30,375 --> 00:42:31,600 어, 내가 바로 생각하지 않습니다. 979 00:42:31,600 --> 00:42:32,810 보자. 980 00:42:32,810 --> 00:42:34,060 의 정말 함부로 할 수 있습니다. 981 00:42:34,060 --> 00:42:37,150 982 00:42:37,150 --> 00:42:38,400 >> 그게 문제입니다. 983 00:42:38,400 --> 00:42:43,180 984 00:42:43,180 --> 00:42:44,970 무슨 일이야? 985 00:42:44,970 --> 00:42:46,050 코드는 나쁘지 않습니다. 986 00:42:46,050 --> 00:42:48,470 그것은 여전히​​ 직선입니다. 987 00:42:48,470 --> 00:42:50,810 휘파람하지만, 좋은 효과입니다. 988 00:42:50,810 --> 00:42:52,060 무슨 일이야? 989 00:42:52,060 --> 00:42:54,700 990 00:42:54,700 --> 00:42:55,620 >> 내가 들어 있는지 확실하지 않습니다. 991 00:42:55,620 --> 00:42:57,620 그래서 밝혀 - 그리고 이 옆으로있다. 992 00:42:57,620 --> 00:42:59,400 이것은의 핵심이 아닙니다 재귀의 생각. 993 00:42:59,400 --> 00:43:02,480 내가에 노력하고있어 있기 때문에, 밝혀 대부분이 같은 큰 숫자를 나타냅니다 994 00:43:02,480 --> 00:43:06,980 아마 그것은 잘못 해석 되 고 긍정적없는 번호로 C로, 995 00:43:06,980 --> 00:43:09,980 하지만 음수. 996 00:43:09,980 --> 00:43:12,690 >> 우리는 이것에 대해 이야기하지만,하지 않은 그 음수가 밝혀 997 00:43:12,690 --> 00:43:14,210 뿐만 아니라 세계에서 양수합니다. 998 00:43:14,210 --> 00:43:16,290 그리고 당신이 할 수있는 수단 음수를 나타냅니다 999 00:43:16,290 --> 00:43:19,530 기본적으로, 당신은 하나를 사용합니다 나타내는 특별한 비트 1000 00:43:19,530 --> 00:43:20,400 부정에 긍정적. 1001 00:43:20,400 --> 00:43:22,950 그것은보다 조금 더 복잡 하지만 그 기본 생각이다. 1002 00:43:22,950 --> 00:43:26,740 >> 그래서 불행히도, C 1 개를 혼동하는 경우 실제로 의미로의 비트, 1003 00:43:26,740 --> 00:43:30,790 오,이 음수 내 루프 여기에, 예를 들어, 실제로는 결코 1004 00:43:30,790 --> 00:43:31,740 종료를하려고합니다. 1005 00:43:31,740 --> 00:43:33,850 나는 실제로 뭔가를 인쇄하는 그래서 만약 또 다시, 우리는 것 1006 00:43:33,850 --> 00:43:34,650 전체 많이 참조하십시오. 1007 00:43:34,650 --> 00:43:36,220 그러나 다시, 이것은 점 외에이다. 1008 00:43:36,220 --> 00:43:38,590 이건 정말 단지 일종이다 우리가 올 거라고 지적 호기심 1009 00:43:38,590 --> 00:43:39,550 결국에 백업합니다. 1010 00:43:39,550 --> 00:43:43,400 하지만 지금은이 올바른지 구현 우리가 가정하는 경우 그 1011 00:43:43,400 --> 00:43:45,970 사용자는 정수를 제공합니다 그 정수에 맞게. 1012 00:43:45,970 --> 00:43:49,370 >> 하지만, 그이 코드 솔직히 주장 훨씬 더 간단하게 수행 할 수 있습니다. 1013 00:43:49,370 --> 00:43:54,060 손 목표는 숫자를 가지고하는 경우 같은 m와의를 추가 1014 00:43:54,060 --> 00:43:59,510 그것은 1, 또는 반대로 사이의 숫자 1 사이에 있고, 내가 주장 1015 00:43:59,510 --> 00:44:03,380 내가 병합하는이 아이디어를 빌릴 수있다 정렬 문제를 복용 한이 있었다 1016 00:44:03,380 --> 00:44:05,660 이 크기로 나눈 작은 일에. 1017 00:44:05,660 --> 00:44:09,875 어쩌면 반하지만, 작은, 그러나 대표적으로 동일합니다. 1018 00:44:09,875 --> 00:44:12,130 같은 생각하지만, 작은 문제. 1019 00:44:12,130 --> 00:44:15,470 >> 그래서 실제로거야 - 나이 파일을 저장할 수 다른 버전 번호. 1020 00:44:15,470 --> 00:44:17,670 우리는이 버전을 호출합니다 1 대신 0. 1021 00:44:17,670 --> 00:44:20,790 그리고 나는 그것이 내가 실제로 할 수있는 주장 이런 종류의에서이 작업을 구현할 1022 00:44:20,790 --> 00:44:22,160 마음 구부리는 방법입니다. 1023 00:44:22,160 --> 00:44:23,710 >> 나 혼자의 일부를 떠날거야. 1024 00:44:23,710 --> 00:44:27,710 M이 작 으면 내가 말할거야 보다 작거나 0도 동일 - 1025 00:44:27,710 --> 00:44:29,280 난 그냥 좀 될거야 더 항문이 시간 1026 00:44:29,280 --> 00:44:30,520 - 내 오류 검사와 1027 00:44:30,520 --> 00:44:33,190 내가 가서 0을 반환하는거야. 1028 00:44:33,190 --> 00:44:34,490 이것은 임의의. 1029 00:44:34,490 --> 00:44:37,500 나는 단지 결정하고 만약 사용자가 저에게 부정적 번호를 제공합니다, 난 1030 00:44:37,500 --> 00:44:41,490 0을 반환하며 읽기해야 문서를 더 밀접하게. 1031 00:44:41,490 --> 00:44:42,170 >> 다른 - 1032 00:44:42,170 --> 00:44:44,070 내가 할거야 알 수 있습니다. 1033 00:44:44,070 --> 00:44:49,260 또 나는 M 플러스를 반환하는 것입니다 - 1034 00:44:49,260 --> 00:44:51,010 M의 시그마는 무엇인가? 1035 00:44:51,010 --> 00:44:56,710 음, M 플러스 M 1을 뺀 시그마, 플러스 마이너스 m 2, m을 더한 마이너스 3. 1036 00:44:56,710 --> 00:44:58,030 그 중 모두 쓰고 싶지 않습니다. 1037 00:44:58,030 --> 00:44:59,120 왜 내가 리면 그냥하지? 1038 00:44:59,120 --> 00:45:05,080 반복적으로 약간으로 자신을 호출 작은 문제, 세미콜론, 1039 00:45:05,080 --> 00:45:06,840 그것은 하루에 전화를? 1040 00:45:06,840 --> 00:45:07,040 >> 오른쪽? 1041 00:45:07,040 --> 00:45:10,980 지금 여기, 너무, 당신이 느끼거나 걱정 수도 있습니다 이 난 것을 무한 루프입니다 1042 00:45:10,980 --> 00:45:15,450 제가 구현하고 그것에 유도, 전화 시그마 시그마. 1043 00:45:15,450 --> 00:45:20,342 하지만 그 때문에 완벽하게 OK의 I 이 선 어떤 추가 앞서 생각? 1044 00:45:20,342 --> 00:45:22,600 >> 대상 : [들림]. 1045 00:45:22,600 --> 00:45:25,430 >> DAVID 마란 : 23-26, 어떤 내 경우 상태입니다. 1046 00:45:25,430 --> 00:45:28,390 에 대한 좋은 무엇 때문에 여기 뺄셈, 나는 유지하기 때문에 1047 00:45:28,390 --> 00:45:31,180 나눠 시그마 작은 문제가 작고, 문제는, 작은 - 그렇지 않아 1048 00:45:31,180 --> 00:45:31,870 절반 크기입니다. 1049 00:45:31,870 --> 00:45:34,380 그것은 작은 만 아기 걸음 하지만 괜찮아요. 1050 00:45:34,380 --> 00:45:38,050 결국, 우리는 일할 수 있기 때문에 아래로 1 또는 0에 우리의 방법입니다. 1051 00:45:38,050 --> 00:45:41,630 그리고 일단 우리가 0 명중, 시그마 아니에요 더 이상 자신을 호출하는 것. 1052 00:45:41,630 --> 00:45:43,590 즉시 0을 반환하는거야. 1053 00:45:43,590 --> 00:45:47,960 >> 그래서 효과는 바람으로 정렬이있는 경우 최대 당신의 마음에, M 모드를 추가하는 것입니다 1054 00:45:47,960 --> 00:45:52,740 M - 1, 플러스 M 마이너스 2 플러스 M 마이너스 3, 플러스 점, 점, 점, M 마이너스 1055 00:45:52,740 --> 00:45:57,820 M, 결국 0을 제공하고, 효과를 모두 추가 할 궁극적으로 1056 00:45:57,820 --> 00:45:59,070 함께이 있어요. 1057 00:45:59,070 --> 00:46:02,380 그래서 우리는, 재귀,하지 않은 문제를 해결하는 우리 1058 00:46:02,380 --> 00:46:03,470 전에 해결할 수 없습니다. 1059 00:46:03,470 --> 00:46:06,840 사실, 버전이 0, 모든 지금까지 문제는 해결할 수있다 1060 00:46:06,840 --> 00:46:09,980 단지 루프를 사용하여 함께 또는 while 루프 또는 이와 유사한 구조. 1061 00:46:09,980 --> 00:46:13,150 >> 하지만, 재귀, 나는 아마 ..., 저희에게 제공합니다 생각의 다른 방법 1062 00:46:13,150 --> 00:46:17,010 문제는, 우리가 걸릴 수 있습니다 약자 경우 문제는, 어떤에서 분할 1063 00:46:17,010 --> 00:46:22,340 다소 무언가에 약간 큰 작은, 우리가 그것을 해결할 수 있다고 주장 1064 00:46:22,340 --> 00:46:26,040 아마 좀 더 우아 측면에서 디자인의 적은 코드로, 1065 00:46:26,040 --> 00:46:30,980 어쩌면 것이라고 문제를 해결 우리는 결국 겠지만, 어렵게 될 1066 00:46:30,980 --> 00:46:33,280 순수 반복적 해결을 참조하십시오. 1067 00:46:33,280 --> 00:46:35,980 >> 내가 한하지만 클리프 행어 우리에 남겨두고 싶은 것은이 있었다. 1068 00:46:35,980 --> 00:46:40,720 내가 가서 열어 보자 에서 파일을 백업 - 1069 00:46:40,720 --> 00:46:44,300 사실, 내가 가자와 이 정말 빨리한다. 1070 00:46:44,300 --> 00:46:46,875 내가 가서 제안하자 다음. 1071 00:46:46,875 --> 00:46:51,160 1072 00:46:51,160 --> 00:46:54,785 오늘의 코드 사이에이 파일이 여기에있다. 1073 00:46:54,785 --> 00:47:01,090 1074 00:47:01,090 --> 00:47:03,050 여기 하나 noswap. 1075 00:47:03,050 --> 00:47:06,260 >> 그래서 그 바보 같은 작은 프로그램입니다 나는 주장 할 것을 채찍질 1076 00:47:06,260 --> 00:47:06,940 다음. 1077 00:47:06,940 --> 00:47:10,140 주에서는 첫 번째 선언 INT는 X라고하고 할당 1078 00:47:10,140 --> 00:47:11,100 1의 값을 반환합니다. 1079 00:47:11,100 --> 00:47:13,520 그런 INT Y를 선언하고 그것을 2 값을 할당합니다. 1080 00:47:13,520 --> 00:47:15,310 다음은 x와 y가 무엇인지 출력합니다. 1081 00:47:15,310 --> 00:47:17,781 그런 다음, 점 점 점 스와핑 말한다. 1082 00:47:17,781 --> 00:47:21,670 >> 그런 다음 함수를 호출 할 수 있다고 주장 X에 전달하고, 스왑이라는 1083 00:47:21,670 --> 00:47:24,290 그 희망 인 아이디어 어느 Y, x와 y는 다시 올 것이다 1084 00:47:24,290 --> 00:47:25,620 다른 그 반대. 1085 00:47:25,620 --> 00:47:27,110 그런 다음 스왑 주장! 1086 00:47:27,110 --> 00:47:28,420 느낌표. 1087 00:47:28,420 --> 00:47:30,190 다음은 x와 y를 출력합니다. 1088 00:47:30,190 --> 00:47:33,480 >> 그러나 판명이 매우 아래 간단한 데모 1089 00:47:33,480 --> 00:47:35,570 여기에 실제로 버그가 있습니다. 1090 00:47:35,570 --> 00:47:38,870 나는 임시을 선언하고있어 비록 변수 일시적으로 퍼팅 1091 00:47:38,870 --> 00:47:42,010 그것은, 나는 재 할당 해요 B의 값 - 1092 00:47:42,010 --> 00:47:45,080 나는 하였으므로 이는 합리적인 느낌 온도에서의 사본을 저장. 1093 00:47:45,080 --> 00:47:48,410 그럼 동등한 B를 업데이트 온도에 어떤이었다. 1094 00:47:48,410 --> 00:47:51,610 이동의 쉘 게임의 종류 이것을 사용하여에로 B와 b 1095 00:47:51,610 --> 00:47:54,360 중간 사람이 임시 느낌이라고 완벽하게 합리적. 1096 00:47:54,360 --> 00:47:57,270 >> 나는이 프로그램을 실행할 때 그러나 나는 그 주장 코드, 내가 지금 할 것 같은 - 1097 00:47:57,270 --> 00:47:59,490 내가 가서 그것을 여기에 붙여 넣을 수 있습니다. 1098 00:47:59,490 --> 00:48:01,995 나는이 noswap.c를 호출합니다. 1099 00:48:01,995 --> 00:48:05,630 이름에서 알 수 있듯이 그리고이 없습니다 올바른 프로그램이 될 것. 1100 00:48:05,630 --> 00:48:09,460 noswap을하지. / NO 스왑. 1101 00:48:09,460 --> 00:48:12,110 x는 1, y를, 2 스와핑, 교환. 1102 00:48:12,110 --> 00:48:14,220 x는 1, Y는 2입니다. 1103 00:48:14,220 --> 00:48:16,920 이것도 근본적으로 잘못된 것입니다 이 완벽하게 보이지만 1104 00:48:16,920 --> 00:48:17,730 나에게 합리적. 1105 00:48:17,730 --> 00:48:21,330 그리고 거기 이유는,하지만 우리는 아니야 아직 이유를 공개하는 것. 1106 00:48:21,330 --> 00:48:24,610 >> 내가 원하는 두 번째 클리프 행어 지금 당신을 떠날하려면, 이것이다 1107 00:48:24,610 --> 00:48:27,120 쿠폰 코드에 종류의 발표. 1108 00:48:27,120 --> 00:48:31,590 늦게 일을 가진 우리의 혁신이 올해 비 사소한 숫자를 자극했다 1109 00:48:31,590 --> 00:48:33,830 질문, 어떤이었다 아니 우리의 의도. 1110 00:48:33,830 --> 00:48:36,590 이 쿠폰 코드의 의도, 그것에 당신은 문제의 일부 작업을 수행 할 경우 1111 00:48:36,590 --> 00:48:39,850 따라서, 여분의 날 받고, 초기 설정 너희들이 도움이 도움이 정말로 1112 00:48:39,850 --> 00:48:42,420 자신이 초기 정렬을 시작 당신을 인센티브로의. 1113 00:48:42,420 --> 00:48:44,880 우리가 걸쳐 부하를 분산하는 데 도움이 근무 시간 잘되도록 1114 00:48:44,880 --> 00:48:45,740 그것은 윈 - 윈의 일종이다. 1115 00:48:45,740 --> 00:48:48,860 >> 불행하게도, 나는 나의 지시를 생각 그래서 지금까지, 매우 명확하지 않은 1116 00:48:48,860 --> 00:48:52,230 난 이번 주말에 다시 가서 업데이트 에 크고, 대담 텍스트 사양 1117 00:48:52,230 --> 00:48:53,600 이와 같은 총알을 설명합니다. 1118 00:48:53,600 --> 00:48:56,900 그냥가, 더 공개적으로 대답 기본적으로 문제 세트 목요일 때문이다 1119 00:48:56,900 --> 00:48:58,400 정오에, 강의 당. 1120 00:48:58,400 --> 00:49:02,030 당신은의 일부를 마무리, 일찍 시작하면 12:00 수요일까지 설정 문제 1121 00:49:02,030 --> 00:49:05,170 PM, 쿠폰에 관한 부분 코드는 아이디어는 확장 할 수 있다는 것입니다 1122 00:49:05,170 --> 00:49:07,710 에 대한 귀하 마감 P 금요일까지 설정합니다. 1123 00:49:07,710 --> 00:49:10,890 즉, 비트 P의 작은 부분 떨어져있다 일반적으로 무엇을 기준으로 설정 1124 00:49:10,890 --> 00:49:13,200 더 큰 문제는, 당신은 구입 자신 여분의 날. 1125 00:49:13,200 --> 00:49:15,190 다시 말하지만, 그것에 대해 생각을 얻는다 문제 설정은, 당신을 얻는다 1126 00:49:15,190 --> 00:49:16,380 근무 시간은 빨리. 1127 00:49:16,380 --> 00:49:20,670 하지만 쿠폰 코드 문제는 여전히 당신이 그것을 제출하지 않는 경우에도이 필요합니다. 1128 00:49:20,670 --> 00:49:23,340 >> 하지만 더 강력하게이있다. 1129 00:49:23,340 --> 00:49:26,520 (STAGE 저소음) 그리고 그 사람이 떠나 초기 후회거야. 1130 00:49:26,520 --> 00:49:28,620 로 발코니에 사람이 있습니다. 1131 00:49:28,620 --> 00:49:32,510 에 사람들에 사전에 나는 사과 될 이유 발코니 1132 00:49:32,510 --> 00:49:33,920 다만 순간에 취소합니다. 1133 00:49:33,920 --> 00:49:37,050 >> 그래서 우리는 중 하나를 가지고 운 에서 CS50의 전 머리를 가르치는 동료 1134 00:49:37,050 --> 00:49:39,302 dropbox.com라는 회사입니다. 1135 00:49:39,302 --> 00:49:45,500 그들은 매우 관대를 기증 이 정도의 공간이 여기 쿠폰 코드, 1136 00:49:45,500 --> 00:49:48,180 에서 어떤 업 보통 2기가바이트. 1137 00:49:48,180 --> 00:49:51,740 그래서 내가 생각했던 우리는이에 할 것 마지막 주, 공짜의 비트를 할 수 있습니다 1138 00:49:51,740 --> 00:49:55,380 그냥 순간에, 우리는 보여줄 것입니다 그것에 승자와 누가 쿠폰을 가지고 1139 00:49:55,380 --> 00:49:57,980 그런 다음 자신에 갈 수있는 코드 웹 사이트를에 입력하고 짜잔, 얻을 1140 00:49:57,980 --> 00:50:01,370 당신을 위해 훨씬 더 보관 공간 기기 및 개인 파일에 대한. 1141 00:50:01,370 --> 00:50:05,690 >> 그리고 처음으로, 누가 참여하고 싶습니다 이 그림에서? 1142 00:50:05,690 --> 00:50:09,630 OK, 이제 그것이 훨씬 더 재미 있습니다. 1143 00:50:09,630 --> 00:50:14,010 이 25 기가 바이트를받는 사람 쿠폰 코드 - 멀리 1144 00:50:14,010 --> 00:50:16,150 말보다 더 강력한 지금, 아마도 일 - 1145 00:50:16,150 --> 00:50:20,620 상단에 장착되어 하나 있어 아래에 방석 1146 00:50:20,620 --> 00:50:21,620 이 쿠폰 코드입니다. 1147 00:50:21,620 --> 00:50:23,480 이제 아래 보일 수 있습니다 좌석 쿠션. 1148 00:50:23,480 --> 00:50:28,710 1149 00:50:28,710 --> 00:50:29,680 >> [동영상 재생] 1150 00:50:29,680 --> 00:50:31,620 >> - 하나, 둘, 셋. 1151 00:50:31,620 --> 00:50:35,015 >> [고함] 1152 00:50:35,015 --> 00:50:35,985 >> - 당신은 차를 얻을! 1153 00:50:35,985 --> 00:50:36,670 당신은 자동차를 얻을! 1154 00:50:36,670 --> 00:50:37,970 >> DAVID 마란 : 우리는 볼 것이다 수요일에. 1155 00:50:37,970 --> 00:50:38,904 >> - 당신은 차를 얻을! 1156 00:50:38,904 --> 00:50:39,371 당신은 자동차를 얻을! 1157 00:50:39,371 --> 00:50:40,305 당신은 자동차를 얻을! 1158 00:50:40,305 --> 00:50:41,706 당신은 자동차를 얻을! 1159 00:50:41,706 --> 00:50:43,107 당신은 자동차를 얻을! 1160 00:50:43,107 --> 00:50:45,530 >> DAVID 마란 : 발코니 사람들이 와서 여기 아래 전면, 1161 00:50:45,530 --> 00:50:46,866 우리는 여분이 곳. 1162 00:50:46,866 --> 00:50:50,282 >> - 모두는 차를 가져옵니다! 1163 00:50:50,282 --> 00:50:52,234 모두가 차를 가져! 1164 00:50:52,234 --> 00:50:52,722 >> [END 동영상 재생] 1165 00:50:52,722 --> 00:50:54,590 >> 내레이터 : 다음 CS50에서 - 1166 00:50:54,590 --> 00:51:00,374 >> 스피커 5 : 아이쿠 아이쿠 아이쿠 맙소사 아이쿠 아이쿠 아이쿠 아이쿠 아이쿠 아이쿠 - 1167 00:51:00,374 --> 00:51:02,106 >> [우쿨렐레이 연주]