본문 바로가기

프로그래밍/자료구조

자료구조 공부하기 자료구조란? 알고리즘이란?

http://blog.naver.com/wlsgkr91/220898511910



자료구조란??

-사람들이 사물을 정리하는 것과 마찬가지로 프로그램에서 자료를 정리하는 여러 가지 구조들이 있다. 이를 자료구조라 부른다. 


스택이란??

-책상에 책을 쌓아 놓은 것처럼 자료들을 정리하는 구조를스택이라 한다.

-스택에서는 맨 위에서만 자료를 추가하거나 제거할 수 있다. 


큐란??

-상범의 줄에 해당하는 자료 구조를 우리는 큐라 부른다. 

큐에서는 먼저 도착한 자료가 먼저 빠져나간다. 


예를들어 

물건을 쌓아 놓는 것= 스택

영화관 매표소의 줄 = 큐

할 일 리스트 =리스트

영어사전 = 사전, 탐색구조

지도= 그래프

조직도= 트리  

이렇게 예를 들어 설명할 수 있다. 


문제를 처리하는 절차가 필요한데이를 알고리즘이라 부른다. 


프로그램= 자료구조 +알고리즘 


만약 배열에 점수를 저장하면 배열이 자료를 저장하는 구조 즉 자료구조가 된다.

배열에 저장된 점수들 중에서 가장 큰 점수를 찾는 절차가알고리즘이다. 


자료구조와 알고리즘의 예를 든 코드를 써보도록 한다.

#define MAX_ELEMENTS 100

int score[MAX_ELEMENTS];    //자료구조

int main()

{

 int i,tmp;

 tmp=score[0];

 for(i=1;i<n;i++){                  //알고리즘

  if(score[i>tmp){

         tmp= score[i];

       }

   }

   printf("%d\n",tmp);

}

알고리즘이란?

-컴퓨터로 문제를 풀기위한 단계적인 절차

-문제와 컴퓨터가 주어진 상태에서 문제를 해결하는 방법을정밀하게 장치가 이해할 수 있는 언어로 기술한 것.

-특정한 일을 수행하는 명령어들의 집합

정의

입력: 0개 이상의 입력이 존재하여야 한다.

출력: 1개이상의 출력이 존재하여야 한다.

명백성: 각 명령어의 의미는 모호하지 않고 명확해야한다.

유한성: 한정된 수의 단계 후에는 반드시 종료되어야 한다.

유효성: 각 명령어들은 실행 가능한 연산이어야 한다.


알고리즘을 구사하는 4가지 방법이 있다.

1.영어나 한국어 같은 자연어

-자연어를 사용하기 때문에 모호성을 제거하기 위하여명령어로 쓰이는 단어들을 명백하게 정의 해야한다.

2.흐름도

-알고리즘이 복잡해질수록 기술하기 힘들다.

3.유사 코드

4.프로그래밍 언어

3,4-모두 명백한 의미를 가지고 있어서 알고리즘을 기술하는데 안성맞춤이다.