퀵 정렬은 정렬을 하는 알고리즘이다. 퀵 정렬은 말의 뜻 그대로 빠른 정렬이다. 선택 정렬보다 더욱 빠를 뿐더러 실제로도 더 자주 사용되는 정렬이다. 그 예로 C언어 표준 라이브러리에서는 qsort라는 함수가 있다. 이 녀석은 바로 퀵 정렬을 구현한 함수라고 할 수 있다. 퀵 정렬에서도 분할 정복 전략(Devide and Conquer)를 적용할 수가 있다. 배열을 퀵정렬로 정렬해서 사용을 해보자. 정렬을 시키는데 필요한 가장 간단한 배열은 무엇일까? 예전에 필자가 언급했던 어드바이스를 기억하는가? 그렇다. 아예 정렬을 할 필요가 없는 정렬도 있다. 비어있는 배열, 원소가 하나인 배열. 이런 종류의 배열은 정렬할 필요가 없다. 비어있는 배열이나 원소가 하나인 배열은 배열이라는 것의 어떤 기본적인 단계가 ..
재귀함수 (recursive function) 개념 리커시브는 반복이라는 뜻이다. 코딩에서 재귀함수는 특정 함수를 생성했을때 그 안에서 다시 스스로 호출하여 기능이 수행되도록 만든 개념이다. 만약, k까지의 합산을 구하는 펑션을 프로그래밍하기 위해서 5까지 합을 만들어내야 한다고 해보자. 만약 5 + 4 + 3의 경우, 5 + 4 의 더하기로 볼 수도 있다. 때문에 4까지의 더하기도 4 + 3 + 2 + 1 까지의 더하기라고 쓸수도 있다. k까지의 더하기를 산출하는 이 함수를 sum(k)라고 부른다면 sum 펑션의 내부에서 또 sum 펑션을 불러서 프로세스를 수행하는게 가능해지는 것이다. 재귀 함수는 다른 여러가지 필드에서도 찾아볼 수가 있다. 프렉탈 모형이 스스로와 유사한 패턴을 가진 작은 모형을 무한..