" /> 2주차 - 데이터 구조와 해싱, 정렬 | BlackWerf's Blog
포스트

2주차 - 데이터 구조와 해싱, 정렬

2주차

기본 데이터 구조

데이터 타입

  • 정수형 : int
  • 문자형: char
  • 실수형: float, double


문법 구조

1
DataType VariableName;


특징

  • 변수는 항상 1개의 데이터만 가질 수 있음
  • 변수의 값은 연산에 따라 달라 질 수 있음


구조체

  • 문법 구조
1
2
3
4
5
6
7
structure st-name{
	dataType member 1;
		.
		.
		.
	dataType member n;
}


배열

  • 동일 타입의 데이터를 갖는 여러 데이터를 사용 할 때 사용

  • 문법 구조

    1
    
    dataType arrayName[Size];
    


    • 예시

      • 정수 데이터 5개

        int arry[5];

      • 문자 데이터 10개

        char arry[10];

특징

  • 다차원으로 사용 가능함

예시

1
int[,] a = new int[4,4];
  • 배열의 차원 수와 차원의 길이 배열 인스턴스를 생성시 사용됨, 인스턴스 된 이후에는 변경 불가능 함
  • 배열의 기본 크기는 0
  • 배열 형식은 어떤식으로도 가능


Stack

Stack의 개념

  • 스택은 입구 한곳만 뜷린 형태의 메모리이다 아래의 사진과 같이 제일 먼저 쌓인 메모리가 아래쪽으로 쌓이고, 마지막에 입력한 데이터가 먼저 제거되는 형태이다.

Stack의 특징

  • 함수의 호출과 함께 생성되며 호출 이후 소멸된다.
  • 변수 크기의 조절이 불가능 함
  • 빠른 엑세스가 가능함
  • 해당 메소드 내에서만 접근이 가능함
  • FILO(First In Last Out)
  • LIFO(Last In First Out)

Image Alt 텍스트


Queue

Queue의 개념

  • 양쪽의 끝이 뜷린 형태의 메모리

  • 아래의 사진과 같이 한쪽으로 데이터가 쌓이고, 메모리에서 값을 제거할 경우 제일 먼저 들어간 값이 먼저 빠져나가는 방식

Queue의 특징

  • FIFO(First In First Out)
  • 사용자가 직접 관리하는 메모리 영역
  • 사용자에 의해 메모리가 동적으로 할당 및 해제
  • 메모리가 낮은곳에서 높은곳으로 할당 됨
  • 메모리 크기 제한이 없음
  • 스택보다 상대적으로 엑세스가 느림
  • 전역적으로 변수 엑세스가 가능함
  • 사용자가 직접 관리하는 메모리 영역이므로 메모리 관리가 필요함

Image Alt 텍스트


컴퓨터의 연산 순위

일반 연산

  • x -> +

컴퓨터

  • + -> x

    컴퓨터는 왼쪽부터 수식을 처리함


연결 리스트

단순 연결 리스트

Image Alt 텍스트

  • 단순 연결리스트는 1개의 data와 link로 구성됨
  • link는 다음 노드의 주소값을 가지고있음

이중 연결 리스트

Image Alt 텍스트

  • 이중 연결리스트는 Left Link, Data, Right Link로 구성됨

  • Left Link는 이전 노드 주소값을 가짐

  • Right Link는 다음 노드 주소값을 가짐


예시
3개 데이터 사용

Image Alt 텍스트

원형 데이터 사용

Image Alt 텍스트


관련 용어

그래프 구조
  • 사이클을 포함하는 자료 구조
트리
  • 사이클이 존재하지 않는 그래프 구조
일반 트리
  • 하나의 가지에서 나오는 서브 가지의 수가 임의 개인 트리
이진 트리
  • 나오는 가지의 수가 2개 이하인 트리


이진 탐색트리와 m-원 탐색트리의 비교

  • 탐색 트리에서 다루는 데이터는 키의 값만 다름


 이진 탐색트리M-원 탐색트리4-원 탐색트리9-원 탐색트리
최대 / 최소 가지의 수2 / 0개M / 0개4 / 0 개9 / 0 개
노드에서 포함한
최대 / 최소 키 값의 수
1 / 0 개M-1 / 0 개3 / 0 개8 / 0 개
10개 키 값을 다룰때
필요한 노드의 수
10개 노드 4개 노드2개 노드


해싱

정의

  • 해쉬 함수와 해쉬 테이블을 이용해, 데이터를 빠르게 저장 및 탐색 가능하게 하는 방법

사용 방식

Image Alt 텍스트

장점

  • 검색시간이 테이블 크기와 관계 없이 항상 동일하며, 이진검색보다 빠름
  • 삽입과 삭제가 쉬움

단점

  • 키 값이 다른 데이터가 같은 해시 테이블에 있을 경우, 충돌이 일어날 수 있음
  • 해시 테이블의 이용도가 낮으면, 메모리의 낭비가 심함


정렬

  • 주어진 데이터를 순서에 따라 배열하는 것
    • 내부 정렬: 주 기억장치 이용
    • 외부 정렬: 보조 기억 장치 이용




참고 자료

  • https://www.programiz.com/dsa/stack
  • https://en.wikipedia.org/wiki/Queue_%28abstract_data_type%29
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.