Programming 32

Sorting

우리가 말하는 정렬이란... 주어진 자료를 특정한 순서대로 나열 하는 것으로 볼 수 있다. 오름차순, 내림차순이 그 대표적인 예이며 그 외에도 사용자의 입맛에 맛게 정렬을 시킬 수 있다. 우리가 프로그래밍에서 흔히 접할 수 있는 정렬 알고리즘은 다음과 같다. 첫번째든 마지막이든 하나의 원소를 선택하여 나머지 원소들과 비교하며 순서를 맞바꾸는 아주 단순 무식한 알고리즘이다. 시간 복잡도는 O(n^2)이며, 거품 정렬은 같은 O(n^2)급 알고리즘 중에서도 상당히 비효율적인 축에 속한다. 첫번째(혹은 마지막)원소를 기준으로 나머지 원소들과의 값을 비교하여 자신의 순서를 결정하는 알고리즘으로 코딩하기도 가장 수월하고 수행시간이 데이터 상태의 영향을 잘 받지 않고, 데이터의 대입 횟수가 적은 게 특징이다. 뭐 ..

Programming 2005.10.05

동적할당(C)

언제부터인가 머리속에서 흐물흐물 사라져 가는 동적할당... 난 잘 모르겠지만... 과거 메모리가 640KB였던 시절에는 메모리 관리가 무척이나 중요해서 동적할당이 매우 중요시 되었지만 요즘은... 흘러 넘치는게 메모리니... 그냥 무조건 선언해서 쓰기만 하고... -_-;;(생각해보라... 휴대폰의 내장 메모리도 100M이니깐....) C++이나 MFC의 경우는 new 한번만 써주면 지가 알아서 다 하지만 C의 경우는 다르다. 내가 사용하고자 하는 data type과 size를 다 지정해주어야 하며 심지어 초기화의 유무도 지정해주어야 한다. C언어의 표준 라이브러리인 stdlib.h에는 동적 할당을 위한 함수인 calloc()과 malloc()가 있다. 이 두 동적할당 함수의 차이는 calloc()는 메..

Programming 2005.10.04