알고리즘 증명하는 법
·
컴퓨터과학/알고리즘
알고리즘은 어떻게 증명해야할까?나도 모르겠다..같이 한 번 알아보도록 하자.증명을 위해서는 명제에서 시작된다.명제.명제는 참, 거짓을 판단할 수 있는 문장이나 식을 뜻한다.조건 P와 Q가 있을 때, "P이면 Q이다"가 명제이다. 기호로는 P->Q로 나타낸다. 그런데 이떄, P이면이라는 것은 거짓인 상태이다.예를들어, P가 5시 전이면, Q가 공부를 한다. 라고 가정해보자. if, 5시가 되지 않았으면 P는 참이다. 이때 공부를 하면 Q도 참이므로 P->Q도 참이다.하지만 공부를 하지 않았다면 Q는 거짓이고 P->Q도 거짓이다. 그런데 5시가 지났다고 가정해보자. 그러면 P는 거짓이다. 이때 Q, 공부를 한다면 참인데, P->Q는 뭘까?P 시간🕐Q 공부🏫P->Q 🕐 🏫 참참참참거짓거짓거짓참공부함.거..
병합정렬(Merge Sort) 알고리즘
·
컴퓨터과학/알고리즘
병합정렬 알고리즘은 Divide and Conquer 알고리즘의 원칙을 기반으로 합니다.정렬되지 않은 데이터는 divide됩니다. 그리고 비교를 거쳐 정렬되게 됩니다.Divide and ConquerDivide and Conquer은 배열을 반반씩 나누며 하나가 될때까지 divide과정을 거친다.위의 예시에서는 6, 5, 12, 10, 9, 1 이 될때까지 divide를 한다.그리고 Conquer(정복)하는 과정에서 큰 수를 오른쪽으로 보내며 병합한다.왼쪽의 첫 번째 요소를, 오른쪽 배열의 모든요소와 비교하여 더 큰게 없다면 Merge할 배열의 인덱스에 차곡차곡 넣는다.그다음에는 오른쪽 배열의 요소를 왼쪽 배열과 비교하는 식으로 차례차례 반복한다.MergeSort알고리즘MergeSort(A, p, r):..
선택정렬(Selection Sort) 알고리즘
·
컴퓨터과학/알고리즘
선택정렬은 각 반복에서 정렬되지 않은, 가장 작은 요소를 선택하고, 해당 요소를 배열의 가장 앞쪽에 위치시켜 차례대로 정렬시키는 알고리즘입니다.선택 정렬 알고리즘1. 첫 번째 요소를 minimum으로 설정합니다.2. 두 번째 요소(12)와 비교합니다.두 번째 요소가 minimum보다 작으면, 두 번째 요소를 minimum으로 선택합니다.이후 세번째 요소와 비교하여 minimum(지금 두번째 요소)보다 세번째 요소가 더 작으면,세번째 요소를 minimum으로 선택합니다.이 process는 마지막까지 반복되어, 한 바퀴가 끝나면 첫 번째 minimum자리에 가장 작은 값이 위치하게 됩니다. 선택된 minimum은 배열의 첫 번째 자리에 위치하게 됩니다. 모든 요소가 올바른 위치에 배치될때까지 1~3단계를 반..
버블정렬(Bubble Sort) 알고리즘
·
컴퓨터과학/알고리즘
안녕하세요, 알고리즘 공부하는 컴공 3학년입니다..ㅎ개강을 시작함과 동시에 이번에 알고리즘 과목을 수강하는데, 수업 전에 미리 공부한 다음 이해한 내용을 토대로 글을 작성해봅니다.알고리즘을 공부하면서 수많은 정렬을 배우게 될거에요, 뭐 버블정렬, 선택정렬, 삽입정렬, 병합정렬, 퀵정렬, 힙정렬 등등(또 있나요?) 이렇게 배우게 될건데.정렬이 뭔지 아시나요?한국인한테 너무 쉬운걸 물어봤죠? 정렬은 알고리즘에 맞게 설명하면, 난잡한... 정리되지 않은 데이터들을 옳바르게 정렬하는거에요. 1, 5, 2, 0, 3.. 이런거 보면 쪼금 불편하지 않나요?우리가 나중에 데이터를 처리하려면 데이터를 가져와야겠죠.. 근데 위처럼 가져오려는 데이터가 지저분~~ 하면 쪼금 거시기 하잖아요? 그래서 정렬 하는겁니다.버블정렬..