본문 바로가기

프로그래밍/알고리즘3

버블정렬 알고리즘 값이 큰 것이 뒤로가는 정렬 *중간에 교체가 일어날때 Swap을 하게 되는데 그부분이 거품과 같다고 해서 버블정렬이라 한다. 12345678910111213141516171819202122232425262728void Study015::BubbleSort(int ary[], int len){ int count = 0; while (true) { int index = 1; //조건 : 앞에 있는 값이 뒤에있는 값보다 크면 서로 자리를 바까 준다. while (index ary[index]) { int temp = ary[index - 1]; ary[index - 1] = ary[index]; ary[index] = temp; } index++; } count++; //방금 교환한 값이 0번과 1번이라면 종.. 2016. 4. 12.
3차원에서 백터(v3)의 내적 (Dot) 과 외적 (Cross) 를 이용한 상대의 앞뒤 좌우 판별법 조건월드 좌표 x = 좌(-), 우(+)y = 앞(+), 뒤(-)z = 위(+), 아래(-) 나 P : v(1,3, 2) , 방향(dir) v(0, 1, 0) 을 바라보느 상황적 A : v(3, 6, 3)적 B : v(2, -1, 2)적 C : v(-1, -1, 2)적 D : v(-2, 4, 1) 먼저 나를 0,0,0 으로 해서 기준으로해서 계산을 쉽게 하기 위해 좌표를 수정한다.단,(현재 좌우와 앞뒤를 구분하기 위해 (위아래는 하지 않는다.) 모든 z축을 0으로 둔다. )나 P = P - P = v( 0, 0, 0 ) , dir( 0, 1, 0) 방향은 그대로 둔다.적 A = A - P = v( 2, 3, 0)적 B = B - P = v( 1, -4, 0)적 C = C - P = v( -2, -4, 0.. 2016. 4. 2.
A* 알고리즘 *여기서 H값은 대각선계산은 하지 않았다. * G값은 8방향 탐색을 위해 대각선 계산을 하였는데 그값은 1.4 직선은 1이다.*OL : Open List*CL : Close List1. 현재노드 (시작은 Start노드)의 주변 8방향을 OL에 넣는다. 2. 주변 8방향의 노드의 부모를 현재 노드로 설정한다.3. 주변 노드에 G, H , F 값을 기입한다.4. 현재 OL에 있는 가장 F값이 낮은 값을 찾고 현재노드는 CL로 가고 찾은 곳을 현재 노드로 설정한다.5. 현재노드에서 주변 8방향으로 다시 검사를 하데 이미 OL에 들어가 있는 곳을 검사 할경우 원래 가지고 있던 F값보다 작을 경우에만 노드 데이타(F,G,H)를 갱신한다.6. 계속 가장 F값이 낮은 곳만을 찾아가며 주변노드를 탐색하는 과정을 반복한.. 2016. 2. 12.