DAVID 마란 : 좋습니다. 이것이 CS50이고, 이쪽은 지금은 주일의 시작. 지금까지 우리가했습니다까지 그래서 C에서 프로그램을 작성하고 그건 좀 봐 여기에 이​​런 식으로 뭔가. 그래서 우리는 몇있어 날카로운 상단에 포함되어 있습니다. 우리는 무효, 주요 int 있으니까요 무언가가 중간에서 할 수있는, 내부 코드의 일부 비트 그 함수의. 그러나 키는 사실이있다 우리는 여기에서 무효라고했습니다. 그래서 무효,이 모든 시간, 지정 이 프로그램은 경우에 실행하는 것이, 이름 만을 통해 실행할 수 있습니다. 당신은 어떤 다른 단어를 입력 할 수 없습니다 또는 프로그램의 이름 때 후 번호 그것을 실행. 그래서, 예를 들어 프로그램이 있다면 안녕하세요라는 파일로 컴파일, 당신은 ./hello 할 수 있지만, 그것입니다. 유일한 방법은 당신이 할 수 이 프로그램에 입력을 제공 함수를 호출하는 것입니다. 예를 들어, 어떤 기능 우리는 지금까지 사용하고있다 사용자로부터 입력을 얻을 수 있습니까? 관객 : 문자열을 가져옵니다. DAVID 마란은 : 문자열을 얻거나하려면 INT를 얻을 수, 또는 당신은 다른 사람을 본 적이 당신이 아직 사용하지 않은 경우에도, 같은 오래 오래 등 얻는다. 그러나 그 가정 우리 실제로 시작하려면 조금 더 아르 프로그램을 작성 솔직히, 좀 더 다양하고, 그리고 만약 여러분의 명령 등 희망을, 받고, 조금 익숙해. CD 공간 드롭 박스처럼. 이것은, 물론, 변경 디렉토리, 가정 당신은 존 하버드의 집에있어 디렉토리, 보관 용 폴더로 이동합니다. 한편,이 같은 명령 , pset2라는 새로운 디렉토리를 생성 당신이해야 할 수도 있습니다으로 이미 나 의지는 곧 문제에 대한이 설정합니다. 확인 안녕은 물론, 명령입니다 그 안녕하세요라는 프로그램을 빌드 안녕하세요 도트 C라는 파일에서. 그리고 이들 각각의 경우는, 지금, 우리는 했어 소위에 인자를 제공 명령 줄 프롬프트가 나타나면, 그 make가 알 수 있도록 무엇을 구축하고, 너무합니다 그 MKDIR 만들 어떤 폴더를 알고, 그래서 그 CD는 알고있다 어디 가고 싶어. 그러나 지금까지 우리는 자꾸 그 주, 기본 기능, 보이드 식에 있습니다 그 괄호 안에 어떤 것이 있다는 것을 의미 인수를 취할 수 없습니다. 그래서 오늘 시작 우리가 무엇을 할 거 야 우리는 시작하기 위하여려고하고있다 이 경우에도 같은 것들을 지원. 사실,이 경우, 어떤 당신을 일반적으로 수동으로 입력하지 마십시오, 이 일을하고있다 확인 우리를 위해,이 없습니다 하나를 제외하고 한 개, 두 개, 세 개 추가 프로그램의 이름을 한 후 문자열 그 소리. 그래서 우리는 어떻게 이것을 달성합니까? 음, 오늘부터, 우리가 원하는 경우 를 통해 입력을 제공 할 커맨드 라인, 소위 우리는 추가 시작하는거야 여기에 노란 건에 무슨 INT의는 argc 쉼표와 공백을 대체 문자열 변수는 argv 대괄호 대괄호. 지금 이것은 재미있다 몇 가지 이유로. 하나, 그것은 우리가 작성할 수 것 좀 더 동적 프로그램. 그러나, 더 강력하게, 그것은 열 것 에 지금처럼 대화 무엇을 배열 할 수있는 정말 어떤 문자열을 사용할 수 정말 후드 아래에있다, 다음 주까지 우리는 다이빙을 시작할 때 기계가 얼마나에 심지어 깊이에서 이 물건의 모든 작업을. 그러나 지금은 그려 보자, 아마도 그림. 당신은 프로그램을 작성하는 경우 선언 주와 함께 이러한 방식으로, 그와 같은 메인 두 개의 인수, int를 취 그리고 ... 어떤 데이터 유형 두 번째 인자는? 청중 : 배열입니다. DAVID 마란 : 배열입니다. 그것은을처럼 그래서 먼저 눈에 보이는 문자열은 있지만, 대괄호가 있습니다. 우리가 도입 된 지난 시간을 기억 배열의 개념. 그리고 배열은 대괄호를 사용 컨텍스트의 커플. 당신은 광장을 사용할 수 있습니다 브래킷은 배열로 이동합니다 와 같은 특정 요소를 얻을 브래킷 0 또는 브래킷 1 브래킷 2. 그러나 우리는, 만약 잠깐 보았다 지난 주에 그 또한 이러한 대괄호를 사용 배열 크기를 선언 사전에 알고있는 경우에 얼마나 많은 정수 또는 얼마나 많은 문자열이나 당신이 무엇을 실제로 할 수 있습니다. 그래서 거기의 밝혀 여기에 세 번째 컨텍스트 그 내부에는 번호가 없습니다 대괄호. 내가 여기에 가지고있는 때, 지정 argv와 같은 이름, 이는 단지 멋진 방법입니다 인수 벡터를 말하고있는 또 다른 멋진 방법입니다 인수의 배열을 말 대괄호 대괄호 단지 당신이 필요하지 않는 것을 의미한다 얼마나 큰 사전에 알고 배열이 될 것입니다 하지만 당신은 배열 될 것 알고있다. 당신이 모르는 경우에 따라서 여러 가지가에 넣어하지 않습니다 대괄호 대괄호에 대한 변수는 argv는 문자열이 아닌 것을 의미한다, 하지만 문자열의 배열. 그래서 구문, 당신이 경우 지난 주 다시 생각한다 그것은 말과 매우 유사하다 INT 세 대괄호 같은, 다음 일 이후. 그래서이 보입니까? 의 실제 그림을 그려 보자. 그래서 당신은 메인이 프로그램을 실행하면 이 인수는 내부 정의하는 데 소괄호, 당신 본질적으로 적어도 두 개의 청크를 가지고 메모리 당신을 물려 후드 아래에. 하나,이 사각형으로 그립니다 내가 겠지만, 는 argc 호출 할 것입니다. 그리고 그냥 빨리 요점을 되풀이로, 는 argc의 데이터 유형은 무엇입니까? 그래서 정수입니다. 그래서 숫자는 것입니다 argc-- 회전에 이동합니다 아웃 인수 수를 의미하는. 한편, 나는 배열로 변수는 argv를 그려 놨거든요. 그리고 정말 모르겠어요 가 될 것 얼마나 오래, 그래서 오늘의 목적은 점 점 점. 그것은 어떤 길이를 얻을 수 있습니다. 하지만 여기에 묘사 한 적어도 네 개의 사각형. 그래서 저장 메모리 청크를 argv를 문자열 문자열 문자열은 점 점 점, 그리고는 argc는 단지 하나의 덩어리입니다 정수의 메모리. 그래서 이제 좀 더 정확하게 할 수 있습니다. 만약, 내가 문자열이있을 때 이 배열에서 호출 argv에, 나는 그들을 싶어 개별적으로 지난 주와 같은, 우리는 표기법을 사용하는거야 argv에 브래킷 공 등 먼저 배열로 얻을 수 있습니다. ARGV 브래킷 1을 얻을 수 등 초 일합니다. 열쇠는 여기에 우리가 아직 영이야 인 indexed-- 우리는 여전히 0부터 계산하고 있습니다. 이제 실제로하자 이 뭔가를 넣어. 나는라는 프로그램을 컴파일한다면 안녕하세요 안녕하세요 도트 C라는 파일에서, 그리고, 나는 그 프로그램을 실행 점으로 인사 슬래시 내 컴퓨터, 내 컴퓨터를 무엇을, 후드 아래처럼 나는 도트 실행 순간 안녕하세요 슬래시를 입력하고 Enter 키를 누르십시오? 음, 이것은 아마도 우리는 설명 할 수 무엇을 컴퓨터의 내용으로 메모리 또는 RAM-- 랜덤 액세스 메모리. 즉, 컴퓨터 어떻게 든 마술 당신을 위해, 는 argc에 숫자 1을두고, 일명 argcount, 그것은 말 그대로 문자열을 넣습니다 ./hello argv에 브래킷 공입니다. 아무 생각이 솔직히 무슨 일이 없다가 argv와 브래킷의 1 또는 2 또는 3, 사용자가없는 경우 때문에 , ./hello 외에 아무것도 입력 우리는 이러한 가정거야 대부분 쓰레기 값은, 말하자면. 메모리의 그 덩어리 존재하지만, 그것은 우리를 아니에요 때문에, 그들을 보는 argcount는 하나입니다. 지금, 그 사이에, 나는 경우 다른 프로그램을 실행, 쓰기, 더 적절하게 명령입니다 CD, 점멸하여 prompt-- CD 공간 나는 효과적으로 것을 실행할 때 Dropbox--, CD 프로그램이 실행될 때,는 argc, 내 컴퓨터의 메모리의 내부입니다 가장 잠깐 씩 제 번호 2. 그리고 argv에 브래킷 o를 가지고 CD, argv와 브래킷 하나는 보관이 다음 코스의 명령 완료, 그래서이 모든 메모리 기본적으로 사라지고 다른 일에 사용됩니다. 그리고 그게 내가 말할 이유 초 단지 분할. 한편, 우리는에서 mkdir pset2을 할 경우, 사진은 거의 같은 보인다 하지만 변수는 argv 안에 다른 문자열. 나는 안녕하세요 연타 대시를 할 경우 안녕하세요 도트 C, 같은 생각. 더 많은 물건을 채워된다 변수는 argv와는 argc는 물론, 4입니다. 따라서 환언하면, 심지어이 배열하지만 일부의 도트 도트 도트 수 있습니다 가변 길이 때문에, 말하자면 당신은 항상 그것의 위치 끝을 알 는 argc 당신을 말할 것입니다 때문입니다 어떤 시점에서 당신은 중지해야 변수는 argv의 요소를 찾고 있습니다. 당신은 사 볼 수 있습니다 이 경우, 전체. 그래서 지금 살펴 보자, 아마도 간단한 프로그램. 그냥 안부 하나 Zamyla 같은 사람이다. 그래서 내가 프로그램을 작성하는거야 주장 그냥 순간에 어떤 통해 내가 할 수있는 다음 내가 원하는 ./hello 공간 Zamyla하고, 내 프로그램은 뭔가를 인쇄하려면 같은 슈퍼 간단하게 "안녕하세요, Zamyla." 이제 과거에 우리는 getstring를 사용했습니다. 과거에, 비록 그래서 당신은 프로그래밍을 처음 접하는 확률은 당신을 채찍질 할 수 있습니다 getstring를를 사용하는 프로그램 다음의 printf를 사용 Zamyla에게 인사한다. 그러나 이제이 시간을 getstring를 사용하지 말자. 나 대신 수험생으로 가자 표준 I O 도트 시간을 포함 않습니다. 나 또한 CS50 도트 시간을 포함 할 수 있습니다. 지금 주요 중간, 그리고 지금 난 오늘 무효하지 않을. 대신, INT의는 argc을 할거야 문자열 변수는 argv 대괄호 대괄호, 번호를 지정하지. 그리고 지금 여기 내 할 소위된다. 내가 지금 할 거 야하는 난입니다 믿음의 도약의 비트를 할 것, 나는 사용자의 것 같은데요 제대로이 프로그램을 사용하는 것, 나는 단순히 갈거야 안녕하세요 printf의 %의 SN을한다. 그래서 아무것도 새. 하지만 지금은 어떤 단어를 넣을 프로그램의 이름 뒤에 사용자 유형. 그래서 Zamyla ./hello 공간을 할 경우, I 어떻게 든 프로그램에 액세스하려면 맺다 "Zamyla을."인용 그래서 나는 내 인수 벡터에 갈 수 있습니다, 내 문자열 배열하고 명령하는 경우, 다시, ./hello 공간은 Zamyla이었다 무슨 수를 내가 원하는 수행 여기에 변수는 argv에 넣어? 대상 : 1. DAVID 마란 : 일 때문에 브래킷 공은 밝혀 을 될 것입니다 프로그램의 이름을 우리는보고있다. 그래서 브래킷은 제 1 단어는 I 것으로, 사용자가 입력 한. 내가 가서이 저장거야. 내 폴더에 갈거야 어디이 파일을 배치했습니다. 나는 안녕하세요 3을 할거야. 미리보기 IO의 OK. ./hello Zamyla십시오. 내가 잘못 무슨 짓을 한거야? 나는 놀라움에 의해 붙 잡혔다 자신이 그냥 잠시. 내가 잘못 무슨 짓을 한거야? 청중 : 이름입니다. DAVID 마란 : 파일의 실제로 hello3.c했다. 그리고 난 그냥 위해 그렇게했다 일관성, 우리가했기 때문에 에 있었다 작성한 hello.c의의 온라인 코드의 과거. 그래서이 ./hello를 해결하자 브래킷 대시 3 Zamyla. 입력합니다. 그리고 지금 우리는, 안녕하세요 Zamyla 있습니다. 한편, 나는로 변경할 수 있습니다 롭, 또는 정말 다른 단어합니다. 그러나의 코너의 경우를 생각해 보자. 당신이 경우 무슨 일이 일어날 지 예상 할 수 나는 모든 사람의 이름을 입력하지? 청중 : 오류가 발생했습니다. DAVID 마란 : 오류 아마도 어떤 종류의. 어디 보자. 입력합니다. 널 (null). 그래서 printf와 실제로되고있다 우리의 작은 보호 여기에 그대로 열린 괄호를 인쇄 널 (null),하지만 더 나쁜 상황이 발생할 수 있습니다. 그리고 단지 보여주기 위해 뭔가 당신이 절대적으로 하지 말아야 할, 들어가요 여기 주위에 파고 시작합니다. 오른쪽? 내가 알고있는 경우 해당 사진에 메모리는 기본적으로이입니다 argv와 브래킷 1 Zamyla, 변수는 argv가 브래킷 0 ./hello이 있거나 ./hello-3. 무엇 브래킷이에? 그래서 나는 대답 할 수 있습니다 바로, 자신을 질문? 난 그냥 2에 1을 변경할 수 있습니다. 지금, 3 안녕하세요 다시 컴파일 ./hello3의이 확대를 입력하고 Enter 키를 누르십시오 보자. 아차. 어떤 따옴표가 없습니다. 흥미. 그래서 종류의의 멋진 여기에 다른 기능을 참조하십시오. 그래서 다른 무엇을 내 노트북​​의 내부에? 의 브라켓 셋으로 저장하자. ./hello-3, hello3를 확인합니다. 호기심. 그리고 지금의 정말 bold-- (50)를 얻을 수 있습니다. 그래서 정말 깊게 다이빙이다 내 컴퓨터의 메모리에. 50 인덱스 인치 그래서 안녕하세요 3 ./hello-3을합니다. 호기심. 좋아, 지금은 그냥 해요 무모 얻을 것. 의는 5000에 가자. 좋아. 그래서 나를 다시 컴파일 할 수 있습니다. ./hello-3, hello3를 확인합니다. 확인을 클릭합니다. 여러분 중 몇몇 지금, 거기는 수도 꺼져가는 전구합니다. 이 얼마나되는 지의 이전에이 메시지를 본 적있어? 확인을 클릭합니다. 그럼, 왜? 승률은 알수가 다른있다 이와 같은 문제가 발생할 수있는 일, 분명히 당신은 좋은에있어 company-- 우리는 분명히있다 라고 원인은 무엇 세그먼트 오류. 그리고 오늘은 긴 이야기를 짧은 I 메모리의 세그먼트를 만진 나는이 안된다. 어디 세그먼트 그냥 덩어리를 의미한다 메모리 내가하지 말았어야 그. 이제 컴퓨터가 보장되는 경우 I 나는 argv와 접촉 할 수있는 ./helloZamyla을 실행 브래킷 공 및 argv를 브래킷 1합니다. 그러나는 argc 값이, 즉 내가 의미입니다 단지 그것이 명예의 일종 allowed-- 터치 외 시스템 브래킷 0 브래킷 1. 내가 더 멀리 가면, 거기에 절대적으로 거기에 메모리를 될 것. 내 RAM은 물리적으로 존재 컴퓨터. 그러나 사람이 무엇을 알고? 실제로, 나는 여러 실행 해요 한 번에 프로그램. 내가 아니었다면 나는 seen--있을 수 있습니다 수험생에이 일을 그러나 나의 Mac 또는 PC--에 내가있을 수 있습니다 메일의 내용을 알. 나는 순간을 볼수있을 것이다 메시지는 내가 최근에 보낸. 수 있습니다 아무것도 메모리에 주위 느린 의 방법으로 액세스 한 수 이 임의의 대괄호 표기법. 또는 더 나쁜 아직, 당신은 할 수 있습니다 내 암호 중 하나를 발견 나는 최근에 입력하는 거라고 프로그램이 메모리에 저장했다 그래서 저를 인증하며합니다 그럼 그냥 가지를 왼쪽 RAM에 나는 그 프로그램을 종료 할 때까지. 그리고 실제로,이 중 하나입니다 위험 한 힘 C. 같은 언어를 사용 당신은 자유롭게 액세스 할 수 있습니다 내용 전체에 프로그램 메모리, 어떤 나쁜 사람은 할 수 심지어 cases--에서 할 특히 우리를 웹 프로그래밍에 도착 학기의 끝으로, 우리는거야 살펴볼 때이 topic--을 방문, 잠재적으로 사람이 컴퓨터의이야 메모리와 같은 호기심이 일을 찾을 수 우리가 본 것처럼. 아니면 더 나쁜 아직, 암호 그가 또는 그녀는 나쁜 일을 할 수 있습니다. 그래서 분명 나는이 일을하지 말았어야 이상한 일이 발생하기 시작하기 때문이다. 실제로,이 프로그램 충돌이다. 이 동등하게 윈도우 맥 OS의 또는 프로그램 윈도우는 사라지고. 예기치 않은 오류가 발생했습니다. 명령 줄 환경에서 우리는이 같은 내용을 볼 수. 하지만 그 이유는, 단순히 터치하고있어가요 나에게 속하지 않는 메모리. 그래서이 방어하자 다른 방법으로 조금 여기에이 프로그램을보고하여. 그래서 다시, 골격 우리는 earlier-- 보았다 나는이 시간 INT 강조했다. 그리고이 모든 시간 주에는 참 값을 반환했습니다. 비록 우리 강의의 대부분 우리는 한 번 사용한 적이 예 주요 아무것도를 반환합니다. 우리는 printf와 가까이 쓰기 중괄호와 그거야. 그러나 무료로, 어떤 컴파일러는 당신을 위해 일을하고 효과적으로 당신을 위해 0을 반환합니다. 병원을 나온 켜고 그것은 조금이다 0이 좋은 것을 counterintuitive--. 그것은 그 자체로 거짓을 의미하지 않는다. 0 좋고, 비 영 값, 세계는 결정했다, 에러를 의미 할 수있다. 혹시 망친 경우에 따라서 컴퓨터에 뭔가까지, 또는 프로그램이 당신에 사망하고 당신은 몇 가지 잘못된 창을 늘어 놓던 화면에 말하는 오류 49 또는 오류 부정적인 23-- 입니다 일부 겉보기에 임의의 value-- 프로그래머는 하드 코딩 때문 49 부정적인 또는 긍정적 인 같은 값 (23) 숫자를 표현하기 위해, 감히, 4000000000 가능한 것들 그 프로그램에서 잘못 될 수 있습니다. 그래서 방법이 걸릴 수 있습니다 이것의 장점 자신? 글쎄, 내가 프로그램을 열 수 있습니다 나는 사전에 썼다, 온라인 안녕하세요 네라고 찌를. 그리고 그것은 것을 제외하고는 거의 동일하다 그 오류 체크를 조금 얻었다. 이 경우, 다시 선언했습니다 이 인수를 복용 등의 주요, 하지만이 시간, 라인 (17)에 통지 나는 전성 검사의 비트를하고 있어요. 그 확인하고있어 는 argc 2에 해당 같습니다. 이 경우이므로, 그 내가 안전하게 할 수있는 의미 뿐만 아니라 브라켓 0하지만 브라켓 하나를 터치합니다. 내가 가서 인쇄, 이 경우, 또는 Zamyla 롭 아니면 밖으로 입력 어떤 단어. 그리고 지금은 그냥 얻을 수 더 적절한 조금 내가 명시 적으로 반환하는거야 공은 모두가 잘 의미합니다. 아무것도 나쁜 일이 없습니다. 그러나 관례, 내가 갈거야 한 돌아가거나 솔직히 아닌 0 값 뭔가 잘못되었을 경우. 이제 사용자에게 않을 것입니다 정말 무슨 일이 일어나고 있는지 알 수 있습니다. 사실 나는이 디렉토리로 이동하는 경우, 우리는 확대 안녕하세요 넷을해야합니까 내가 예상 한대로 ./hello-4 Zamyla 동작합니다. 하지만 대신 입력하지 않은 경우 아무것도, 아무것도 일어날 것 같다, 하지만 충돌하지 않습니다. 그리고 내가 대신 일을 할 경우 롭 같은 감독관은 Thayer-- 공유에 임의의 정보를 제공합니다. 그러나 통지 argv를 1, 2, 3, 4, 5는 현재 메모리에 존재해야한다. 즉,도하지 무슨이다 내 프로그램은 예상 나는 여부를 확인했기 때문에 는 argc는 같음이 아닌지 같습니다. 그래서 나는 지금이 방어하고 있습니다. 지금과 같은 옆으로, 우리 programmer-- 또는 오히려 우리 users--는 0 또는 1 있지만이를 사용 중임을 확인하지 못합니다 도구, 디버거, 또는 다른 도구를 호출 우리가 전에 볼로 한, 당신이 프로그래머 실제로 될 일을 볼 수 있습니다 프로그램의 내부 잘못되어 가고. 그래서는 argc에 대한 질문? 그래. 청중 : 내가 본 어디 문자가 없었어요, [INAUDIBLE] 단지 같은 문자열 스타 D를 말했다 문자 별표 쉼표. 그들은 여기에 해당합니까? DAVID 마란 : 그들은이다. 질문은 그래서, 당신은이 가끔 본 프로그램 그렇지 않은 다음과 같습니다 : 문자열 변수는 argv 브래킷을 말한다 대신 뭔가 말 문자 스타는 argv 브래킷 등을들 수있다. 그리고 심지어는 다른있다 당신이 볼 수있는 변형. 그들은 참으로 동일합니다. 지금, 우리는이가 훈련 바퀴의 정렬 CS50에서 문자열의 형태에 도서관,하지만 단지 주 이상에서 또는 그렇게 우리는 그것을 제거하는 겁니다 모두 실제로 폐쇄 문자 및 별 무엇을보고 이고, 그 메모리에 관련된 방법 표현보다 일반적으로. 그래서 우리는 다시 그에게 올 것이다. 우리는 argv 또는는 argc에 다른 질문 있나요? 그래. 관객 : 왜 돌아 않았다 오류 [들리지? DAVID 마란 : 왜 그랬는지 아, 먹을 것은 오류를 반환! 이전의 경우, 언제 메모리와 주변 구부릴했다, 이유는 오류를 반환 않았다 정말 큰 숫자를 입력 할 때? 짧은 대답은 우리가 운이 좋았죠입니다. 일반적으로, 컴퓨터 덩어리로 메모리를 할당 그리고 그것은 나에게 충분히 큰 덩어리를 준 나는 들키지 않고, 멀리있어 감동 브래킷 2, 브라켓 (3)의, 브래킷 (50),하지만 최대한 빨리 누르지로 나의 운, 나는 넘어 갔다 메모리의 청크의 경계 운영 체제는 저를 부여했다. 그리고 그 때예요 아래로 고정없이 말했다. 분할 오류입니다. 그래. 대상 : 수행 방법 컴퓨터 는 argc의 값을 알아? DAVID 마란이 : 어떻게 컴퓨터는 argc의 값을 알아? 당신이 프로그램을 실행하면 해당 프로그램, 프롬프트가 나타나면의 특성상, 의 배열을 넘겨진다 입력 된 단어 프롬프트에서, 그이었다 프롬프트에 입력했습니다. 그리고 그것은 운영됩니다 시스템 본질적 당신을 위해 주요의 인수를 채 웁니다. 그래서 서비스 중 하나 당신이 얻을 것을 일종의 비밀 의 후드 아래 운영체제. 다른 질문 있나요? 그래. 청중 : 코어 덤프가 무엇을 의미합니까? DAVID 마란 : 코어 덤프가 무엇을 의미합니까? 그래서 좋은 질문이다. 그리고 나에게로 돌아 가자 여기에이 디렉토리. 그리고 당신은 그것을 알 수 있습니다 나는 거기에 새로운 파일이 있습니다. 그것은 참으로 핵심이라고하고, 영역 이죠 실제로 일반적으로 괜찮은 크기의 파일입니다. 즉, 본질적으로 스냅 샷입니다 내 프로그램 메모리 내용 이 추락 또는 RAM. 그리고 이것은, 도움이 될 것입니다 잠재적으로 진단 학적, 우리는 미래의 강의에서 이야기하면 및 디버깅에 대한 부분, 실제로 작업을 수행 할 수 있기 때문에 디지털 부검의 상당 해당 파일에 파악하는 데 도움 당신은 당신의 프로그램에서 뭘 잘못했는지. 그래. 관객 : 명령 ARGC인가 자체, 또는 당신은 아무것도 이름을 지정할 수 있습니다? DAVID 마란 : 좋은 질문입니다. 그 자체로 명령 ARGC인가 또는 당신은 아무것도 이름을 지정할 수 있습니다? 확실히 명령이 아니다. 그것은 단순히 변수이다 또는 인수의 이름입니다, 그래서 절대적으로 우리 이 foo는 호출 할 수 있습니다, 우리는 경향이 줄을 호출 할 수 있습니다 이동 - 단어 컴퓨터가 될 수 있습니다 과학자에 간다. 그러나 규칙에 따라, 우리는 argc와 argv를 사용합니다. 그러나 그것은 단지 인간이다 컨벤션, 아무것도 더. 좋아. 그래서 밝혀, 내가 봤는데 흰색 lie--의 비트를 말하는 솔직히, 미래에, 당신은 볼 것이다 우리는 다른 흰색 거짓말을하고 있었어요. 하지만 지금, 우리는거야 이들 중 하나를 벗겨합니다. 이전 I 때 여기 이때 ./hello 또는 ./hello-3와 같은 프로그램을 실행 Zamyla, 우리의 내용을 가지고 내 약처럼 보이는 컴퓨터의 메모리 이. 그러나 문자열이 무엇인지 기억합니다. 우리는 무엇을 일주일 전에 말 했는가 문자열은 실제로 후드 아래에 무엇입니까? 청중 : 문자의 배열입니다. DAVID 마란 : 그것은이다 문자의 배열, 오른쪽? 그래서 우리의 배열이있을 수 있습니다 문자열하지만,​​ 차례 차례로, 문자열 문자의 배열이다. 난 정말 할 싶다면 나는이 그림을 그려 항문, 정말 그리기해야 그것은 좀 더 이런 식으로, 이에 의해 이들 각각의 내 argv 배열의 인덱스, 전체 문자열 자체가 자신 있다는 것은 배열입니다. 그리고 지금의 거짓말 오늘날 우리가 말하는 거 사진이 없다는 것입니다 아주 같이. 사실, 작은 사각형은 큰 사각형의 일반적으로 외부 가. 그러나 우리는 오래 전에 다시 그에게 올 것이다. 그러나 이것은, ./hello 백 슬래시 0 그 특수 문자가있는 문자열의 끝을 구분한다, 그리고 우리는 또 다른 한 후이있어 Zamyla의 이름입니다. 그래서 이것은 무엇을 의미 하는가? 글쎄, 내가 가서하자 이 다른 예를 열어 온라인으로 사용할 수는 있습니다. 하나는 argv1.c라고 다른 하나는 argv2이다. 그것은 슈퍼 간단한 프로그램입니다 그 과거 프로그램 다르다 점에서 지금은 사용하고 argc와는 여기 argv를. 지금은 루프와 통합 해요 argc의 최대의 난에서 라인 (18) = 0이다. 내가 뭘 하겠어 여기에이 코드 라인? 영어. 이것은 분명히는 argc의 사용을 보여줍니다. 그러나 영어로 무엇을 수행합니다 나는이 프로그램을 실행하는 경우가 있습니까? 그래? 청중 : 그것은 인쇄 할거야 당신 당신이 원하는만큼 화면. DAVID 마란 : 그렇지. 그래서 어떤 단어 I 그것의 프롬프트에 입력 역류 것 한 줄에 나 한테 그 하나. 그럼 가서이 작업을 수행 할 수 있습니다. 내 디렉토리에 가자 및 argv1 ./argv1을 수행. 그리고 지금의이 간단하게 할 수 있습니다. 의 처음에 아무것도 할 수 있습니다. 그것은 한 가지를 인쇄했고, 즉, 실제로 프로그램의 이름이다, 그 브래킷 공에 있기 때문에. 지금 foo는 말을하면, 그것은 할 것 그 두 가지, 내가 foo는 줄을 말한다면, 그것은 그 세 가지를 말할 것입니다. 이제 어쩌면 다소 흥미. 하지만 변수는 argv를 불러 문자열의 배열입니다, 하지만 문자열은 문자의 배열입니다, 그래서 우리는 한 단계 일을 걸릴 수 있습니다 그 기본을 적용 논리와 코드를 만들어 그 인정 하듯이, 좀 더 애매한 보인다. 그러나에 의해 중첩 된 데 루프, 유사 뭔가 당신은 마리오에서 호출을 사용하는 것과, 예를 들어, 경우에 당신은이 방법을했다. 그래서 지금 난, 라인 (19)에 통지 다시는 내 인수 반복, 0에서 최대에 argc의합니다. 그리고 지금 라인에 나는 21-- 해요 마지막 week--에서 트릭을 차입 나는이 무엇인지 확인하고 있어요 argv와 브래킷 난의 길이. 나는 N에서 그 답을 저장하고 있습니다. 그리고 제가 일본에서에 통합하고있어 J가 0으로 초기화된다 N, 최대. 그래서 계산을위한 대회. 당신이있는 경우에 당신은 내가 사용하고 나면 중첩 루프, 당신은 다시 난을 사용할 수 없습니다 그렇지 않으면 당신은 잠재적으로, 소지품 것이다, 내부 루프의 외부 값입니다. 그래서 나는 규칙에 따라 J를 사용하고 있습니다. 우리는 K를 사용할 수 있습니다. 당신이 K 이상이있는 경우, 아마 일반적으로 너무 많이 중첩이있다. 하지만 지금은 내 printf의 통지 라인은 약간 다릅니다. 나는 % s을 (를) 인쇄 아니에요, 난 %의 C를 인쇄하는 물론 문자에 대한 자리 표시 자입니다. 그리고 지금이 구문을 확인할 수 있습니다. 새. 우리는 전에 그것을 보지 못했다. 그러나 논리적으로, 이것은 단지 의미 argv에 존재 i 번째 문자열을 얻을 무엇 j 번째를 얻을 수? 청중 : 문자입니다. DAVID 마란 : 문자열에서 문자입니다. 그래서 대괄호를 사용하여 대괄호 다음에, 이 첫번째 다이빙 변수는 argv의 문자열로, 다음 두 번째 J 대괄호 의 문자에 다이빙 argv에 존재하는 특정 문자열. 그리고, 그냥 좋은 측정을위한, 여기 새로운 라인을 인쇄하고 있습니다. 그래서 지금 내가 가서 열 수 있습니다 약간 더 큰 창 최대 그래서 우리는 행동에서 볼 수 있습니다. 나 해당 폴더로 가자. 그리고 지금 확인 할 변수는 argv-2 ... 변수는 argv-2을 whoops--, ./argv 2. 입력합니다. 그리고 그것은 조금 어렵다 수직으로 읽는, 하지만 실제로의 이름입니다 빈 줄 다음 프로그램. 이제 내가 가서 foo는 작업을 수행 할 수 있습니다. 마찬가지로 하드 판독하지만 야 할 실제로 한 줄에 하나의 문자를 인쇄 할 수 있습니다. 나는 줄을한다면, 그것은 이제 라인으로 그 선을 인쇄. 그래서 여기에 테이크 아웃은 너무 많이하지 않습니다 와우,이 깔끔한 새로운 마술을보고 있음 어디 내용을 얻을 수 있습니다 배열의 특정 문자, 오히려 우리는 이러한 기본을 복용하는 방법 배열로 인덱싱과 같은 아이디어, 다음으로 인덱싱 해당 배열에 있었다 배열, 단지 동일한 아이디어를 적용 조금 더 복잡한 예. 그러나 기본은 정말하지 않은 심지어 지난 주 이후로 변경. 지금 이것은, 적시 일종이다 점에서, 주 제로에서, 리콜 우리는이 같은 전화 번호부와 함께 연주. 그리고 이것은 분명히에도 불구하고 종이의 물리적 조각, 당신은 가지를 생각할 수 배열로 전화 번호부. 당신이 인 경우에 확실히, 다시 구현 이 조각 종이의이 조각 컴퓨터, 아마 당신이 뭔가를 사용하는 것이 배열은 그 모두를 저장하는 것처럼 모든 방법에서 이름과 전화 번호 Z까지 그래서이 있기 때문에, 좋은 그것은 우리에게 기회를 허용, 어떻게 할 수도 있고, 아마도 고려 실제로 그런 일을 구현합니다. 여기 문 시리즈로. 나는 일은 ... 그렇다면 우리는 하나가 필요 최대에 와서 자원 봉사. 어디 보자. 익숙하지 아마도, 아마도 익숙하지 않은 얼굴. 어떻게 오렌지 약? 여기에. 오렌지 셔츠, 업 어서. 의 지금과 이동 앞서 가자 측면을 통해 이러한 문, 잠시 길에서 이러한 이동합니다. 당신의 이름은 무엇입니까? AJAY : DAVID 마란 : 아제. 데이비드. 만나서 반가워요. 좋아. 그래서 우리는이 여섯 뒤에있다 screen--에 디지털 도어 또는 오히려, 일곱 문 숫자를 왕창 screen--. 그리고 난 당신에게 아무것도 말하지했습니다 에 advance-- 동의? AJAY : 사전에 없음. DAVID 마란 : 모든 당신이 원하는 이제 나를 위해 찾는 것입니다, 그리고 우리를 위해, 정말 수 (50) 한 번에 한 단계. AJAY : 번호 50? DAVID 마란 : 번호 50. 그리고 당신은 무엇을 밝힐 수 이 문 각 뒤에 단순히 손가락으로 만져. 젠장. [웃음] [박수] 아주 잘. 확인을 클릭합니다. 우리는 멋진 선물이 여기 당신을 위해 수상. 영화의 당신의 선택 우리 지난 주 논의했다. AJAY : 오, 이런. 아, Spaceballs 본 적이 없어. DAVID 마란 : Spaceballs. 좋아. 그래서 한 순간에 개최합니다. 의이를 만들어 보자, 어떻게? 가르침을받을만한 순간은 당신은 어떻게 했나요 숫자 50를 찾는? AJAY : 나는 무작위로 선택했다. DAVID 마란 : 그래서 당신은 선택했다 무작위로 운이 좋았죠. AJAY : 예. DAVID 마란 : OK. 우수. 그래서 지금 당신을했으나, 운이, 어떤 다른받은 이 문 뒤에 무슨 일이 있었 겠는가? 내가 가서한다면 및 여기에이 번호를 공개, 그들은 실제로 임의의 순서에 있습니다. 그리고 최고의 당신이 가질 수 수행 솔직히, 궁극적입니다 최악의 경우에는, 그들 모두를 검사. 그래서 당신은, 슈퍼 행운이있어 어떤 우리는 알고리즘이라고 부르는 없습니다. 그래, 축하합니다. 당신이 할 수 있다면 그러나 지금, 유머에게 나를 let's--. 여기서이 탭에 가자. 그리고 여기에서 명확하게 숫자 임의의 순서로 보이는, 그들은 있었다. 하지만 지금은 대신 제 경우 이들 문 뒤에 분류되어 숫자입니다. 목표는 이제하다 우리에게 숫자 50를 찾을 수 있습니다. 그러나 알고리즘을 수행하고 당신이 그것에 대해가는 여러분의 의견을 알려주세요. 당신이 그것을 발견하면, 당신은 영화를 유지합니다. 당신은, 당신이 그것을 돌려 줄 찾을 수 없습니다. AJAY : 그래서 끝을 확인하는거야 첫째하게 있어요 여부를 결정합니다 [웃음과 박수] DAVID 마란 : 여기 당신은 간다. 의 하나를 살펴 보자 아제의 전임자, 확실히 운이 숀. OK, 여기에 작업 때문에, 션은 다음과 같다. 나는이 뒤에 숨겨진 문 7 번 그러나이 문 중 일부에 자리 잡고 뿐만 아니라 다른 음이 아닌 숫자입니다. 그리고 당신의 목표는이 생각하는 것입니다 그냥 배열로 숫자의 맨 위 행. 우리는 개 단지 순서 야 그들 뒤에 숫자와 함께 종이의. 그리고 당신의 목표는 정상을 사용합니다 배열 여기, 나에게 일곱 번째를 찾을 수 있습니다. 그리고 우리는 그 비판하려고하는 당신은 그 일에 대해 가지 방법에 대해 설명합니다. 우리에게 7이라는 숫자하십시오하실 수 있습니다. 번호 5, 19, 13. 속임수의 질문이 아니다. 1. 이 시점에서 당신의 점수는 매우 아니다 좋은, 그래서 당신은뿐만 아니라 계속 있습니다. 3. 에 이동합니다. 솔직히, 나는 도움이되지만 궁금 수 없습니다 당신은 무엇을도에 대해 생각하고 있습니다. 숀 : 난 단지 맨 윗줄에서 걸릴 수 있습니다. DAVID 마란 : 만 맨 위 행. 그래서 당신은 세 왼쪽 있어요. 그래서 나에게 칠을 찾을 수 있습니다. [관객이 제안을 소리 질러] 그래서 그 둘은 훌륭했다 매우 다른 이유. 따라서이 어디 우리 조금 전에 중단, 여기에 대한 통찰력 이 문은 번호가 있었다 그들 뒤에 그 이상적인 정렬 된 에 대한 테이크 아웃은 당신이 할 수 있다는 것입니다 근본적으로 더 나은 이 두 번째 example-- 그리고, 참으로, 그 숀했다 임의의 숫자와 함께 첫 번째 시도 그냥 before--하지만 곧 이 번호는 분류되어 있습니다로, 전화 번호부처럼 많이 당신은 분명 무엇을 할 수 있습니까? 또는 당신은 어떻게 그 지식을 활용할 수 있습니까? 그래. 청중 : 당신은 [INAUDIBLE] 중간 이동합니다. DAVID 마란 : 그래. 정확히. 그래서 아제의 초기 본능이었다 내 기억으로는, 끝을 확인하기 위해, 그리고 우리 종류의 완성 신속하게 예. 우리가 시작하지만이 더 많은 일을 할 수 있습니다 차근 차근 그 라인을 따라, 하지만 아마도 시작 중간 그들이 정렬하고 있기 때문에, 즉시 우리가 공개로 번호 16, 우리 그러므로부터 알아 그리고 이제 우리는 ... 그 얘기도 정확히하자 따라서 알고 50 그 오늘날의 경우에, 오른쪽으로 가지고있다. 그러니 그냥 같은 주 제로의 우리는 반으로 전화 번호부 찢어 그리고의 절반을 던졌다 거리 문제, 여기에 같은 생각. 우리는이 절반을 던질 수 문제의 거리. 그리고 아마도 무엇을 알고리즘 적으로 할 수 있습니다, 당신은 50해야한다는 알면 오른쪽에, 그것은 어디인지, 중간에,이 시도이며 나머지 문. 물론, (50)는 높은 42보다 그래서 우리는 할 수 있습니다 이 나머지를 던져 거리 문제 분기 그리고, 마지막으로, 확인 50 뭔가. 그러나 단지와 같이 전화 번호부,이 숫자 이미 우리에게 주어졌다 정렬 된 순서로, 우리를 잎 질문, 당신은 어떻게 할 정렬 된 순서로 일을 처리? 그리고 솔직히, 어떤 비용? 그것은 할 한 가지 전화 번호부를 건네 다음 찾아 당신의 친구들에게 감동을 오른쪽 정말로 빨리 전화 번호? 을 찾기 위해 32 페이지를 찢어 4000000000 페이지 중 사람, 우리는 하나의 극단적 인 예라고 말했다. 그러나 얼마나 많은 시간은 걸렸나요 버라이존은 전화 번호부를 정렬하려면? 그것은 우리 힘들어하지 않아 많은 시간 이 일곱 숫자를 정렬하는 방법? 그게 우리가했습니다 질문 지금까지 완전히 무시했다. 그래서 지금은이 질문에 대답 할 수 있습니다. 그리고 우리는 지금 모든 동영상 나간다, 그러나 우리는 약간의 스트레스 볼을해야합니까. , 팔 자원 봉사자는 말을하는 경우 여기에 우리를 합류 상관 없어? 방법에 대한,의 앞서 가자와 할 당신의 네, 여기 세 가지? 새로운 얼굴을 가져옵니다. 그리고 거기의 네? 그리고하지의 편의하자 지금은 - 이곳에와 여기에서 끝을 통해 여덟. 올라 와요. 좋아. 그래서 우리는 여기에 대해 무엇을 당신의 각각의 숫자입니다. 당신이 가고 싶은 경우 앞서,이 번호를 가지고. 당신의 이름은 무엇입니까? 아티 : 아티. DAVID 마란 : 아티, 알았어요. 당신은 수 일이야. AMIN : 아민. DAVID 마란 : 아민. 데이비드. 당신은 2 번이야. 나는 손으로 그리고, 가서 만약 종이 시트 음악 앞에 자신을 줄 거기와 같은 순서에 의미합니다. 앤디 : 안녕하세요, 앤디. DAVID 마란 : 앤디, 만나서하는 것이 좋다. 번호 3. 야곱 야곱. DAVID 마란 : 야곱, 번호 4. 탑승을 환영합니다. GRANT : 부여합니다. DAVID 마란 : 부여합니다. 번호 5. 튼튼하게 알라나. DAVID 마란 튼튼하게, 번호 6. FRANCES : 프랜시스. DAVID 마란 : 프랜시스, 수 7. 그리고? 레이첼 : 레이첼. DAVID 마란 : 레이첼, 숫자 8. 좋아. 가서 순서에 자신을 얻을. 내가 나머지 하나를 넣어 보자 음악이 자리에 서있다. 당신은 어디에서 독립을해야합니까? 확인을 클릭합니다. 가서 당신의 숫자를 넣어 여기서 관객이 그들을 볼 수 있습니다, 음악은 바깥쪽으로 향하게 서있다. 그리고 희망, 우리의 첫 번째 전성 검사 이곳에 4, 2, 6. 오 - 오. 분을 기다리십시오. 우리는 팔이 없습니다. 나는 당신을 퇴거해야 어떻게 든 예. 번호 아니, 괜찮아요. 어디 보자. 우리는이 작업을 수행 할 수 있습니다. 대기. 우리가 간다. 수정. 좋아. 그래서, 지금 우리는 8, 1, 3, 7, 5가있다. 확인을 클릭합니다. 우수. 그래서 손에 질문에,이다 어떤 비용 및 어떤 방법을 통해, 우리가 실제로 여기에이 숫자를 정렬 할 수 있습니다 우리가 가지 뒤쪽으로 작업 할 수 있도록, 궁극적으로, 그리고 decide--는 정말입니다 인상적인, 정말 효율적이다, 내가 나눌 수 있고 전화 번호부를 정복? 그것은 그 정말 효율적인 나는 분할하고 정복 할 수 있습니다 이러한 디지털 조각 보드에 종이, 그것은 우리에게 대가를 치르게 될거야 아마 경우 시간이나 에너지 또는 CPU 사이클의 행운 실제로 우리의 데이터를 얻을 수 일부 정렬 된 순서로? 그래서 그 질문을 물어 보자. 그래서, 일단,이 번호는 거의 임의의 순서로, 내가 제안하는거야 한 알고리즘 또는 프로세스 하는 우리는이 사람들을 정렬 할 수 있습니다. 내가 다가 갈거야 이 꽤 순진. 그리고 인식하는거야 나를 위해 많은 가지 있다고 주위에 내 마음을 포장합니다 전체 데이터를 한 번에 설정합니다. 그러나 당신은 무엇을 알고 있는가? 나는 몇 가지를 만들려고 해요 아주 간단한 한계 수정. 도 4 및도 2는 경우, 순서를 벗어난 목표는 최대 8 개에 1에서 이동하는 것입니다. 그래서 당신이 뭘 알아? 난 당신을 가질거야 당신이 전환하는 경우들, 교환 물리적 위치와 종이의 당신의 조각. 이제도 4 및도 06은 이러한 순서에있다. 나는 사람들은 떠날거야. 도 6 및도 8은, 그 순서대로있다. 그들이 떠날 예정. 순서가 8 AND1. 당신이 교환 상관 없어합니다. 이제 8 세, 너희들은 교환 할 수 있다면. 8, 7, 너희들은 교환 할 수 있다면. 그리고 8, 5, 너희들은 교환 할 수 있다면. 자, 다입니까? 아니, 분명하지. 하지만이 만든 더 나은 상황, 오른쪽? 이름이 뭐였더라, 8 번? 레이첼 : 레이첼. DAVID 마란 : 그래서 레이첼이있다 효율적으로 꽤 멀리까지 버블, 끝으로 끝까지 여기에 숫자의 내 배열입니다. 그래서 그 문제는 가지 해결된다. 이제, 분명히이 여전히 필요 조금 이동하고, 4, 6 및 1. 하지만 난을받은 것 같다 용액에 가까운 작은. 그래서이 같은 적용 할 수 다시 순진 발견. 2, 4, OK. 4, 6, 확인을 클릭합니다. 6 일, mm-mm. 의 스왑을 보자. 6 세, mm-mm. 의 스왑을 보자. 6과 7은 OK입니다. 7 및 05 아니. 의 스왑을 보자. 그리고 지금 7, 8. 그리고 자네 이름이 뭐였더라? FRANCES : 프랜시스. DAVID 마란 : 프랜시스. 그래서 지금 프랜시스는 심지어 더 나은에 위치, 이제도 7 및도 8 인해 제대로 상단에 부풀어있다. 그래서 2, 4, OK. 4 일,하자 스왑. 4, 3,하자 스왑. 4, 6, 당신은 괜찮아요. 6, 5,하자 스왑. 그리고 지금 그 사람이 좋다. 우리는 거의 다 왔어. 2 일, 순서가, 그래서 교환합니다. 그리고 지금 나를 전성 검사를 할 수 있습니다. 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8. OK, 그래서 우리는 완료. 그러나 무슨 비용은 I를했다 여기에이 숫자를 정렬? 글쎄, 얼마나 많은 단계 잠재적 I을했다 이 사람들을 정렬 할 때 걸릴? 음, 우리는 다시 그 질문에 올 것이다. 하지만, 솔직히, 당신이 가지고있는 경우 조금 지루는, 그건 가지이 아니었다에 공개 어쩌면 가장 효율적인 알고리즘입니다. 그리고 실제로, 솔직히, 나는 땀을 흘리고있어 모두가 더 앞뒤로 산책. 즉, 특히 효율적인 느끼지 않았다. 그래서 다른 뭔가를 할 수 있습니다. 너희들은 다시 할 수 있다면 이 여덟 값을 자신. 잘 했어. 그냥 들어, 디지털 살펴 보자 순간 우리는 다른 뭔가를 시도하기 전에 방금 무슨 일이 있었는지에. 여기, 당신은 볼에 대한이야 이 여덟 사람의 시각화 이에 파란색과 빨간색 바는 숫자를 나타냅니다. 키 바, 수 더 큰. 짧은 바, 수가 적 으면. 그리고 당신이 보게 될 것은입니다 그들의 팔보다 더 임의의 순서. 이러한 막대를 만나러가는 중이 야 동일한 알고리즘으로 분류되어지고, 또는, 지시 사항 집합 우리는 거품 정렬 이제부터는 전화 할께. 그래서 초 정도마다, 알 이 바는, 적색으로 점등된다 컴퓨터에 의해 비교되고있다. 그리고 만약 큰 바, 작은 바는, 순서가 그들은 나를 위해 교환되고있다. 지금이 믿을 수 없을만큼 지루 확실히,이를보고, 매우 오래하지만 알 오른쪽으로 이동하는 큰 막대를 takeaway-- 왼쪽으로 이동하는 작은 바. 의이 과정을 중단하자 이 속도를 훨씬 더 빨리, 그래서 우리가 할 수있는 어떤 고급 감을 얻을 실제로, 거품 정렬은하고있다. 실제로, 최대 버블 링이야 리스트의 우측, 또는 배열, 더 큰 바. 그리고 반대로, 작은 바 아르 왼쪽 아래로 자신의 길을 버블 링, 빠른 속도이기는하지만 보다 우리는 이전했다. 그래서 더 인간과 보려면, 하지만 시각이 참으로 무엇을이다 무슨 일이 벌어지고. 그러나의 근본적 해보자 지금은 다른 접근 방식. 의 다른 해보자 알고리즘 우리는 당신을 가지고있다 사람이 원래의 시작 이 순서가 여기에 있었던 위치. 그리고의 지금 진행하자. 그리고 내가 뭔가를 할거야 더 간단, 맞죠? 돌이켜 보면, 다시 페어 교환 다시 거의 조금 영리한. ,의 더욱 순진하게 일을하자 여기서 나는이 사람들을 정렬 할 경우, 나 그냥 계속 찾아 보자 가장 작은 요소. 그래서 지금은 4 인 내가 본 가장 작은 수입니다. 내가 기억하는거야. 아니,이 더 나은, 그리고 기억. 한도 작다. 3, 7, 5. 확인을 클릭합니다. 보이면 당신의 이름이 뭐였더라? 아티 : 아티. DAVID 마란 : 아티. 그래서, 아티, 가서. I 라인 밖으로 당길거야. 여기 다시 올 수 있다면. 그리고 나는 그 공간을 확보해야합니다. 우리는 여기에서 결정 포인트가 있습니다. 우리는 여기 아티 공간을 만들 수있는 방법 수 일이 속하는 처음에? 대상 : 이동. DAVID 마란 : OK, 우리 모두를 이동 할 수 있습니다. 그러나 최적화를 제안한다. 즉, 조금 귀찮은 느낌 나 사명을 신청하기에 아래로 모든 방법을 이동합니다. 나는 다른 어떤 작업을 수행 할 수 있습니까? 관객 :을 전환합니다. DAVID 마란은 :을 전환합니다. 그리고 자네 이름이 뭐였더라? 야곱 야곱. DAVID 마란 : 야곱 이동합니다. 훨씬 더 효율적 그냥 가지고 아티와 야곱 스왑 위치 강제력에 반대 이 사람들의 네, 에, 대단히 감사합니다 자신의 정확한 위치. 이제 어떻게 아티에 대한 좋은 데요, 그는 자신의 올바른 위치에 있습니다. 다시 한 번이 작업을 수행 할 수 있습니다. 2, 내가 본 것 중 가장 작은 수입니다. 3, 7, 5. 확인을 클릭합니다. 이 확실히 작다. 어떤 작업을 수행 할 필요가 없습니다. 다시 한 번 해 보자. 6. 작은? 8. 아니. 네? 우. 내가 네 기억하자. 3. 내가 3을 기억합시다. 7, 5. 나는했습니다 작은 수 이 패스를 볼 수는 3입니다. 당신은 밖으로 올 것이라고합니다. 어디 우리가 당신을 넣어가는거야? 그리고 당신의 이름은 무엇입니까? 튼튼하게 알라나. DAVID 마란 튼튼하게, 우리는있어 당신을 퇴거해야 할 것. 하지만 그게 더 효율적입니다 단지 이명을 교환하고, 여러 사람이하는 것보다 실제로 이상 회피. 이제 다시는이 작업을 수행 할 수 있습니다. 나는 4를 선택, 그래서 밖으로 올거야. 누가 이동하는거야? 번호 8, 물론. 지금은 숫자 5를 찾아내는 경우에, 밖으로 온다. 번호 8 다시 퇴거 당할 것이다. 지금 자리에 숫자 6을 찾을거야. 장소에 7. 대신 8. 우리가 지금 한 것은 선택 정렬라는 것을, 우리는이를 시각화하는 경우, 그것은이다 조금 다른 느낌 것. 의 앞서이에서 가자 메뉴 여기,이 visualization-- 의는, 파이어 폭스에 오셨죠이 설정을 변경 할 수 있습니다. 이제 선택 정렬로 변경하자. 그리고 이제 이전과 속도를 높일 수 있도록, 이제 시각화를 시작합니다. 그리고이 알고리즘은있다 그것에 다른 느낌. 각각의 반복에, 솔직히, 그것은 훨씬 더 간단합니다. 난 그냥 작은 요소를 선택하고 있습니다. 자, 솔직히, 그 약간의 운이있어 시간, 그에서 초고속 분류. 요소는 임의이었다. 그것은는 우리가 결국거야, 아니야 근본적으로 빠르고 참조하십시오. 그러나 이제 세 번째이자 마지막 보자 무슨 일이 일어나고 있는지에 여기에 접근. 그럼 가서하자 너희들을 다시 일 마지막으로 여기에이 순서로한다. 그리고 지금, 나는 갈거야 , 좀 더 영리 우리의 알고리즘을 완성합니다. 난 할거야. 나는 갈거야 앞뒤로 정말 감사합니다. 솔직히, 난 지쳤어 이 모든 이송. 난 그냥 난 무엇을 가지고 갈거야 리스트의 처음에 주어진 나는 정렬 할거야 그 다음 거기. 그래서 여기에 우리가 있습니다. 번호 4. 나는 번호를 삽입 할거야 정렬 된 목록에 네. 완료. 지금 주장하고, 그냥이 더 만들기 위해 분명, 내 목록의이 부분은 정렬됩니다. 그것은 바보 같은 주장 가지이지만, 실제로 4는 크기 하나의 목록에 정렬​​됩니다. 지금, 나는 2 번에 걸릴거야. 수 2는 지금 갈거야 적절한 장소에 삽입합니다. 어디이 소속입니까? 물론, 여기. 그래서 가서 당신이 할 수 있다면, 다시 이동합니다. 그리고 왜 너희들은 그냥해야 하나 음악은 당신과 함께이 시간을 의미합니다. 그리고 강제로하자를 삽입 목록의 처음으로. 그래서 좀 더 많은 작업. 나는 주위 야곱를 이동했다 당신의 이름은 무엇입니까? AMIN : 아민. DAVID 마란 : 아민. 그러나 적어도 나는 앞뒤로 가지 않았다. 내가 가서 그냥 물건을 가지고 있어요. 나는 단지 그들을 삽입 해요 바로 이곳에서. 6, 이것은 실제로 매우 간단합니다. 당신이 있나, 저기를 삽입하자 단지 약간 이상 이동 싶었다. 번호 8, 또한 매우 쉽다. 바로 저기. 젠장. 번호 하나 우리는 할 수 없습니다 만 여기 아민으로 교체, 그 때문에거야 엉망 순서. 그래서 우리는 좀 더 영리해야한다. 그래서, 아티는 경우는 수 잠시 백업합니다. , 이제 가서 지금 이동하자 이전 알고리즘과는 달리, 아티을위한 공간을 만들기 위해 여기 처음에. 하루의 끝에 그래서 나는 가지 해요 내가 전에 피하기 위해 원하는 것을하고. 그래서 내 알고리즘은 일종의 의는 지적 반전 그것은 원래 무엇에서. 난 그냥 이동을하고 있어요 상이한 시점. 지금은 세에 있어요. 이런, 젠장. 우리는 다시 더 많은 작업을 수행해야합니다. 그래서 당신을 밀어 보자. 좋아, 이동, 8, 6, 4-- 오 ... 오와 3 바로 거기에 갈 것입니다. 이 때 적어도 약간의 저축에서 그래서. 7, 너무 많은 작업을 수행 할 수 있습니다. 당신이 팝업 싶다면 다시,의 당신을 삽입 할 수 있습니다. 그리고 마지막으로, 오, 당신이 경우 다시 팝업 할, 우리 당신을 전환 할 필요가 오 때까지 당신은 장소에 있습니다. 그래서 지금에이를 볼 수 있습니다 그래픽 고레벨 의는이 알고리즘을하자 시각화 한 추가 시간. 그래서 이것은 우리가 삽입 정렬을 호출해야한다. 우리는 단지로 실행합니다 빠르고, 여기를 시작합니다. 그리고 그것은 너무 다른 느낌이있다. 그것은 종류의 더 나은 점점 및 더 나은,하지만 완벽 결코 나는 그 틈에 부드러운 갈 때까지. 때문에, 다시, 나는 단지 복용하고있어 나는 왼쪽에서 오른쪽으로 주어지고 있어요. 그래서 나는 운이하지 않았다 모든 것이 완벽했다. 우리는이 작은 있었다 이유 우리가 시간이 지남에 고정 mispositions. 그래서 이러한 알고리즘 모두에 보인다 약간 다른 걸음에 실행합니다. 사실, 어떤 당신은 말할 것 최고의 또는 지금까지 가장 빠른? 버블 정렬, 첫째? 선택 정렬, 초? 삽입 정렬, 셋째? 나는 약간의 선택 종류들을 수 있습니다. 다른 생각? 그래서 밝혀 이러한 알고리즘의 모든 근본적으로 단지 효율적입니다 다만, 역으로 각각 다른 것이라면 또는 서로 같은 비효율적 우리가 근본적으로 할 수 있기 때문에 세보다 더 이러한 알고리즘의. 그리고 흰색 거짓말의 비트도 있습니다. 나는 효율적 말할 때 비효율적으로, 그 이상에 대한이야 N의 초대형 값. 우리가 여기에 단지 8 명이있을 때, 아니면 화면에 50 정도 바, 당신은 절대적으로 차이를 알 수 있습니다 이 세 가지 알고리즘 중. 그러나 N 등, 사람의 수, 또는 숫자의 개수, 또는 휴대폰에서 사람의 수 책, 또는 웹 페이지의 수가 구글의 데이터베이스에 , 더 크고 더 커지며 이 부분에 대해서는 다음의 세 알고리즘은 실제로 매우 가난하다. 그리고 우리는 근본적으로 할 수 보다 더 나은. , 이제 마지막으로 살펴 보자 어떻게 이러한 알고리즘은 수도에서 에서 같은 소리 몇 가지 다른 컨텍스트 뿐만 아니라이의 방법으로 여기 시각화 그것은 우리를 소개합니다 알고리즘의 수입니다. 이제 가서 축하하자 누구의 모두 여기에 우리의 참가자, 매우 자신을 잘 분류. 당신은 이별 선물을하고 싶다면. 당신은 당신의 번호를 유지할 수 있습니다. 그리고 당신은 볼 것을, 또는 오히려, 지금 듣고 입니다 우리는 소리를 넣어 이 바의 각 행 그리고, 소프트웨어와 연결 소리의 서로 다른 주파수, 당신은 당신의 마음을 더 audioly을 포장 할 수 있습니다 이런 것들을 어떻게 각 주변 처럼. 그 중 첫째는 삽입 일종의 [TONES] 이 거품의 일종이다. [TONES] 선택 정렬. [TONES] 병합 정렬라는 뭔가. [TONES] 그놈 일종. [TONES] 즉, CS50은 여기까지. 우리는 수요일에 당신을 볼 수 있습니다. 내레이터 : 그리고 지금, "깊은 Daven 판햄으로 생각 ". 왜 for 루프는 무엇입니까? 왜 그것을 더 만들? 나는 오 루프를 만들 것. [웃음]