삽입정렬 알고리즘은 선택정렬과 함께 가장 많이 사용되고 간단한 방법의 정렬법이다. 선택정렬이 많은 비교와 적은 교환을 수행한다면 삽입정렬은 그와 반대되게 많은 교환과 적은 비교로 수행된다.

삽입정렬은 주어진 데이터의 2번째 부터 선택하여 그 앞쪽의 데이터와 대,소를 비교하여 작다면 앞쪽의 데이터를 뒤로 보내고 삽입할 공간을 마련해두고 삽입하게 된다.

구현은 아래와 같다.


<성능 테스트>
 데이터 갯수  수행시간
 10000  125
 20000  474

Posted by hazeyun
,

선택정렬 알고리즘은 정렬알고리즘 가운데 가장 쉬운 방법으로 사람들이 일반적으로 흩어진 카드를 맞추거나 할 때 일상생활에 사용하는 방법을 알고리즘으로 그대로 옮긴 것이다.

정렬되지 않은 데이터중에 가장 작은것을 찾아 앞에두고 그나머지 것들 중에 다시 가장 작은것을 찾아 그다음에 두고 이런식으로 반복하다 보면 정렬이 완료되어 있다.

그것을 알고리즘으로 구현하면 아래와 같다.



<성능 테스트>
간단하게 timeGetTime()함수를 사용하였고, 데이터는 난수 생성 하였다.
Release모드가 아닌 Debug모드로 테스트.
 난수 갯수  시간
 10000  156
 20000  625


Posted by hazeyun
,

Posted by hazeyun
,
main.h


main.cpp


test.cpp


단방에 오류 뜨는구나...

static키워드의 의미를 지금껏 반쪽밖에 이해하지 못하고 있었구나.. 무지하도다..ㅋ
Posted by hazeyun
,

유용한 ip위치 찾기

Tip 2008. 12. 3. 13:35


ip를 입력하게 되면 그아이피가 사용되는 위치를 가르쳐 주는 사이트다..

꽤나 유용할듯...

http://www.ip-adress.com/

처음 접속하게 되면 자신의 아이피로 위치를 가르쳐 주는데 잴 하단의 링크를 따라가면

아이피를 입력하는 부분이 있다.

Posted by hazeyun
,

한이음 EXPO 전시..

idle talk 2008. 11. 28. 23:19

졸업작품 전시하러 코엑스 갔다왔내요~! ㅋ

도저히 왜 뽑혔는지 알 수 없는....ㅋㅋ

어쨌든 간만에 서울 나들이 잼났네요^^

http://blog.naver.com/jubileo/150038202552
Posted by hazeyun
,

[linux명령어] - time

Study/Linux 2008. 11. 24. 00:49

명령어나 프로그램 등의 수행 시간을 확인하기 위해 사용하는 명령어다.

사용법은 간단하게
]$ time  수행할 명령   <=== 이렇게 입력 해주기만 하면 끝이다.
위를 보면 filecopy프로그램을 수행하여 시간을 측정해 보았다. 단순히 time만 입력햇을 경우 아무런 시간이 없다가 명령어를 덧 붙여 주자 시간이 표시 되었다. 0.001s 까지 표시가 되므로 아주 세밀한 측정은 무리가 있겠지만 간단히 쓰기에는 유용한 명령어 이다.
.
.
더 자세한 정보는 ]$man time을 참고 하시라~ㅋ
Posted by hazeyun
,
작업 관리자 따라해 보려고 알아보 던중 CreateToolhelp32Snapshot라는 api를 찾았다.
첨 보는 함수 였는데 꽤 알려져 있는지 웹서핑에 쉽게 찾아 볼 수 있었다.

일단 뭐하는 함수 인고 하니...
HANDLE CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32processID);
정의된 플래그와 프로세스id를 받아서 핸들을 넘겨주게 되어있다. 그리고 이 넘겨받은 핸들을 이용하여 루프를 돌면서 Process32FirstProcess32Next를 사용하여 프로세스의 정보들을 얻어올 수 있다.
프로세스의 정보는 PROCESSENTRY32라는 구조체에 담아진다.


자세한 정보는 여기를 들어가 보길..

그럼 위의 것들을 이용하여 간단히 프로세스 이름과 아이디를 출력하는 프로그램이다.


참고로 위의 CreateToolhelp32Snapshot, Process32First..등등 을 사용하기 위해 <tlhelp32.h>꼭 포함시켜 줘야 한다.
Posted by hazeyun
,

CRC-32

Study/Algorithm 2008. 11. 23. 23:52


CRC란 무엇일까?
위키백과를 찾아 보게 되면..

순환 중복 검사(巡環重復檢査), CRC(cyclic redundancy check)는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.

데이터를 전송하기 전에 주어진 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송하고, 데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC 값을 계산하게 된다. 이어서 두 값을 비교하고, 이 두 값이 다르면 데이터 전송 과정에서 잡음 등에 의해 오류가 덧붙여 전송된 것 임을 알 수 있다.

CRC는 이진법 기반의 하드웨어에서 구현하기 쉽고, 데이터 전송 과정에서 발생하는 흔한 오류들을 검출하는 데 탁월하다. 하지만 CRC의 구조 때문에 의도적으로 주어진 CRC 값을 갖는 다른 데이터를 만들기가 쉽고, 따라서 데이터의 무결성을 검사하는 데는 사용될 수 없다. 이런 용도로는 MD5 등의 함수들이 사용된다.

정도로 설명 되있다.

CRC-32 에 사용되는 값은 0x04c11db7 이다.

구현해 보고 싶다. 빡세게 공부해서 함 해봐야겠군..ㅡ_ㅡ+

Posted by hazeyun
,

WinDbg명령어 정리...

Study 2008. 11. 21. 09:55

< WinDbg 명령어 > 

3가지 타입

1) 그냥 명령어. ex)dc
=> 디버거의 자체 내장기능
2) 점(.) 명령어. ex).load
=> 심볼을 로드나 환경 설정 변경과 같은 디버거 자체를 제어
3) 느낌표(!) 명령어. ex)!dc
=> 디버거에 내장이 되어있지 않은 확장 명령

kd>.reload

심볼을 로드

kd>lm

심볼이 로드된 상태를 보기

kd>!vm

기본적인 메모리 정보 보기. 실행중인 프로그램 목록과 메모리 크기 출력

kd>!lookaside

다양한 시스템 참조 목록의 내용 및 크기를 표시

kd>!session

활성화된 세션의 목록의 보여준다

kd>!sprocess

세션의 데이터 구조체와 프로세스의 주소를 나타냄

kd>dd (프로세스명)

PE값 볼 수 있다.

kd>!pte

가상주소를 나타내는 PDE 및 PTE를 표시한다.

kd>!handle

사용중인 프로세스에 대한 테이블을 표시

kd>dt nt!_file_object (값)

파일개체주소의 dt를 보여줌

kd>dt_EPROCESS

운영체제의 서로 다른 옵셋의 이름을 출력

kd>.hh xx

xx에 대한 도움말 파일을 부른다.

kd>.chain

로드된 확장 DLL을 보여준다.

kd>.load

확장 DLL을 로드한다.

kd>.unload

모든 확장 DLL을 언로드한다.

kd>!process 0

모든 프로세스 보기 (!process 0 4 쓰레드 포함 모든 프로세스 보기)

kd>!dc

물리 메모리 내용 보기

kd>? (16진수)

10진수로 보기

kd>!driver

현재 로드된 드라이버 보기

kd>!kb

스택 추적

kd>x

심볼을 확인

kd>ld

특정 모듈의 심볼을 로드한다.

kd>dl

Double-Linked List를 트레이싱한다.

kd>!idt(kdex2x86)

인터럽트 디스크립터 테이블을 보여준다.

kd>!drvobj kbdclass

kbdclass 드라이버의 정보를 보여준다.

kd>kn

콜스택 확인

kd>.frame (값)

조사를 원하는 스택프래임으로 이동

kd>dv

스택에 있는 변수를 확인

kd>.symfix (c:\Os...)

심벌패스를 자동으로 마이크로 소프트의 웹 심벌로 지시하여 준다.

kd>!thread

지정한 스레드에 대한 자세한 정보를 출력

kd>!stacks

시스템데 있는 모든 스레드의 스택백트레이싱 내용을 출력

kd>dg

지정한 셀렉터에 대한 정보를 출력하여 준다.

kd>!vad (값)

유저 메모리의 정보를 바이너리 트리 형태로 저장 출력하여 준다.

kd>!dlls

현재 프로세스에 로드되어 있는 모든 DLL

kd>.formats (값)

지정한 상수 값을 여러 가지 데이터 타입으로 보여준다.

kd>!IDT

인터럽트 디스크립터 테이블의 내용을 보여준다.

kd>!pcr

Processor Control Region 내용을 출력하여준다.

kd>RDMSR

Model-Specific Register 값을 읽는다.

kd>!drvogj (드라이버)

드라이버 객체의 정보를 볼 수 있다

kd>dt nt!_kthread

구조체의 형태를 확인

Posted by hazeyun
,