목록알고리즘 (4)
Prosto
'빠르게 정렬하는 방법으로 가장 많이 사용되는 퀵정렬' 퀵 정렬은 빠른 정렬이나 퀵 소트(Quick Sort)라고도 부릅니다. 퀵 정렬(Qucik Sort)는 데이터를 정렬하는 방법 중 하나입니다. 데이터를 분할(Divide)하고 분할된 부분 별로 이동하는 정복(Conquer) 과정을 반복하여 거쳐 정렬하는 방법입니다. (지금까지의 정렬들과 달리 조금은 복잡합니다만 보고, 직접 해보며 이해할 수 있을 겁니다.) 성능을 Big O로 표기한다면 average, best = O(n log n)이고, worst = O(n^2)입니다. 일반적으로는 O(n log n)의 성능을 내주지만, 피봇(중심점이) 항상 최솟값이나 최댓값으로 잡힌다면 최악의 성능인 O(n^2)이 나옵니다. 참고로 지금까지 했던 (선택, 삽입,..
'검색할 범위를 반으로 줄여가며 찾아가는 이분 검색(Binary Search)' 이분 검색은 검색할 자료를 반씩 나누어 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 검색(탐색) 방법입니다. 이 이분 검색을 이용하여 자료를 찾는다면 빠른 속도로 원하는 자료를 찾을 수 있습니다. (단, 이분 검색은 정렬되어있는 데이터에 사용할 수 있습니다.) (정렬 방법은 블로그 내의 다른 글을 참고하시면 도움이 될 것 같습니다.) 성능을 Big O로 표기한다면 O(log n)입니다. 자료가 2개라면 1번, 4개(2^2개)라면 2번, 8개(2^3개)라면 3번, 16개(2^4개)라면 4번, ... 1,024개(2^10개)라면 10번, 1,048,576개(2^19개)라면 최대 19번이면 찾습니다. 굉장히 빠르죠? 실제 배..
'선택하여 차례대로 정렬하는 선택정렬' 선택 정렬은 데이터를 정렬하는 방법 중 가장 기본적인 방법으로 첫 번째 자료부터 마지막 자료까지 하나씩 순서대로 정렬해가는 방식입니다. 오름차순이라면 가장 낮은 숫자가 첫 번째, 가장 높은 숫자가 마지막이 되겠죠? (내림차순이라면 그 반대의 결과가 나오겠죠?) 그렇다면 이 선택 정렬은 어떻게 이루어지는 걸까요? 오름차순을 기준으로 이야기하자면 이렇습니다. 첫 번째 위치인 가장 낮은 값을 찾기 위해서 두 번째부터 마지막까지 낮은 값을 확인하여 첫 번째 값을 결정합니다. 그 과정에서 현재 위치의 값보다 작은 값을 만나면 서로의 값을 교환해줍니다. 그 후 두 번째로 낮은 수를 찾기 위해서 세 번째부터 마지막까지 현재 두 번째 자리의 수보다 낮은 값이 있는지 확인하죠. 마..
배열에 대한 연습 문제를 풀어보는 첫 번째 시간입니다. 배열과 for문(반복문) 사용을 할 수 있어야합니다. 배열을 잘 모르겠다면? '[C언어] 배열(Array)의 이해와 예제, 문제' 배열 연습 문제는 먼저 배열 안에 숫자를 원하는 대로 넣을 수 있는지에 대한 부분부터 단계적으로 살펴보며 진행하겠습니다. 이런 규칙을 만드는 부분은 프로그래밍 로직을 생각하는 부분과 관계가 깊으니 어떻게 하면 만들 수 있을지 생각해보고 만들어보시면 좋을 것 같습니다. 물론, 완성된 소스는 제공합니다. 설명이 필요한 부분은 간단하게 설명도 함께 올리도록 하겠습니다. 첫 번째 시간의 문제는 배열에서 가장 간단한 문제일 것이라 생각됩니다. 문제1. 아래의 사진과 같이 5x5 배열에 숫자를 넣고, '실행 결과 예'와 같이 출력하..