달력

62024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

이진탐색(Binary Search)


    • 이진탐색의 조건
      • 정렬된 데이터가 저장된 배열
    • 시간복잡도의 평균적 케이스(average case)

#include <stdio.h>

#include <iostream>


int L_Search(int arr[], int length, int target) // 순차 알고리즘

{

int first = 0; // 시작 인덱스

int last = length - 1; // 마지막 인덱스

int middle; // 중앙 인덱스


while (first <= last)

{

middle = (first + last) / 2; // 중앙값 찾기


if (target == arr[middle]) // 중앙값이 타겟과 같다는 조건

{

printf("검색 완료  값 : %d \n", middle);

return middle; // 검색된 값 리턴

}

else

{

if (target < arr[middle])

{

last = middle - 1;

}

else

{

first = middle + 1;

}

}

printf("검색 실패 \n");

return -1;

}


void main()

{

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 10 };


L_Search(arr, sizeof(arr) / sizeof(int), 3);

L_Search(arr, sizeof(arr) / sizeof(int), 9);


system("pause");



결과값)


Posted by JakeGD
|

순차 탐색(Linear Search)

    • 말 그대로 처음부터 끝까지 검색하는 알고리즘

간단한 알고리즘 코드)

#include <stdio.h>

#include <iostream>


int L_Search(int arr[], int length, int target) // 순차 알고리즘

{

for (int i = 0; i < length; i++)

{

if (arr[i] == target) // 대상 찾기

{

printf("저장할 타겟 : %d \n", i);

return i;

}

}

printf("탐색에 실패함 \n");

return 0;  // 못찾을시 -1 리턴


}


void main()

{

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int SearchIndex;


SearchIndex = L_Search(arr, sizeof(arr) / sizeof(int), 4);


SearchIndex = L_Search(arr, sizeof(arr) / sizeof(int), 11);


system("pause");

}

 



결과 화면)





Posted by JakeGD
|

알고리즘 이란?


    • 알고리즘
      • 사전적인 의미는 어떠한 문제를 해결하기 위한 여러 동작들의 모임.
      • 유한성을 가지며, 언젠가는 끝나야 하는 속성.
      • "문제를 해결하는 방법!"

    • 알고리즘 조건
      • 입력 : 외부에서 제공되는 자료가 0개 이상 존재
      • 출력 : 적어도 2개 이상의 서로 다른 결과 도출 (즉, 모든 입력에 하나의 출력이 나오면 X)
      • 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성
      • 유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내)에 종료
      • 효율성 : 모든 과정은 명확하게 실행 가능(검증 가능)한 것

길찾기의 대표적인 알고리즘인  A*(에이스타), Dijkstra(다익스트라) 또한 캐릭터의 이동, 회전, 점프 등
주어진 문제에 대한 해결을 할 수 있는것이 알고리즘이다.


Posted by JakeGD
|
  • 자료구조(Data structure) 란?
    • 사전적인 의미는 자료(Data)의 집합이며, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것입니다.


  • 자료구조(Data structure)의 종류?
    • 자료구조는 크게 선형, 비선형 자료구조로 나뉘어져 있으며 선형 자료구조의 경우 데이터가 일렬로나열 되어 있는 것을 뜻하며 비선형 자료구조는 특정한 형태를 띄고 있습니다.

      • 선형구조
        • 배열 (Array)
        • 연결 리스트 (Linked List)
        • 스택 (Stack)
        • 큐 (Queue)

      • 비선형 구조
        • 트리 (Tree)
        • 그래프 (gragh)


Posted by JakeGD
|