본문 바로가기

시간복잡도3

[알고리즘-3] 삽입정렬 안녕하세요 기린입니다 :) 지난 시간까지 선택 정렬과 버블 정렬에 대해 알아보았습니다. 앞에서 다룬 정렬 알고리즘은 모두 시간 복잡도 모두 O(N^2)을 가진다는 점에서 비효율적이라 할 수 있죠. 이번시간에 다룰 삽입 정렬은 어떨지 한번 보겠습니다. 문제는 지난 시간과 동일합니다. 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 삽입 정렬은 위 문제를 풀 때 각 숫자를 적절한 위치에 삽입하는 방법으로 문제를 해결합니다. 자 여기서 다른 알고리즘들은 무조건 위치를 바꾸는 방식이었다면 삽입 정렬은 '필요할 때만' 위치를 바꾸게 되는데요 먼저, 소스 코드를 살펴 보겠습니다. #include int main(void) { int i, j, temp; int ar.. 2022. 3. 10.
[알고리즘-2] 버블정렬 안녕하세요 기린입니다 :) 오늘은 지난 시간에 이어서 버블 정렬에 대해 알아볼텐데요 자 버블정렬이란 일련의 숫자들을 오름차순으로 정렬하는것 인데요 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 버블정렬 또한 선택정렬과 같이 몹시 직관적인 해결 방법입니다 바로 가까이에 있는 두 숫자끼리 비교해서 더 작은 숫자를 앞으로 보내주는 것을 반복 하는 겁니다 다시 말해 버블정렬이란 옆에 있는 값과 비교하여 더 작은 값을 반복적으로 앞으로 보내는 정렬 방법인데요 정렬 알고리즘 중에서 구현은 가장 쉽지만 가장 비효율적인 알고리즘입니다 #include int main(void) { int i, j, temp; int array[10] = {1, 10, 5, 8, 7, .. 2022. 3. 7.
[알고리즘-1] 선택 정렬 안녕하세요 기린입니다 :) 알고리즘을 공부할 때 가장 먼저 풀어보는 문제로 '정렬(Sort)' 에 대해 알아보겠습니다. 수많은 알고리즘 중에서 이 정렬 알고리즘은 효율성의 차이를 극명하게 보여주기 때문에 단계적으로 공부하시면 효과적일 것 같습니다 자 바로 간단한 문제부터 시작해보겠습니다 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 위와 같은 문제를 만났을때 여러분들은 어떻게 푸실 건가요? 만약 처음 알고리즘을 공부하시는 분들이라면 머릿속이 복잡하실수도 있습니다.. 하하 만약 사람이라면 전체 숫자를 확인하고 1부터 10까지 숫자를 써내려 가겠죠 ? 하지만 컴퓨터에게는 그 과정을 구체적으로 명시해줘야 제대로 작동할 수 있습니다 그 과정을 알고리즘이라고 할.. 2022. 3. 6.