프로그래밍/TIL(Today I Learned)

2강 배열

가라멜 2018. 8. 22. 23:23
반응형

1. 배열의 정의

- 일정한 차례나 간격에 따라 벌여놓음(사전적 정의)

- '차례'와 관련된 기본적인 자료구조

- 인덱스와 원소값의 쌍으로 구성된 집합

- 원소들이 모두 같은 자료형과 같은 크기의 기억 공간을 가짐

- 인덱스와 주소값의 관계


2. 배열의 추상 자료형

- ADT Array

객체 : <Index, Element> 쌍들의 집합. 

연산 :  a, i, item, n인 모든 것에 대하여 다음과 같은 연산이ㅣ 정의(a는 0개 이상의 원소를 갖는 배열, item은 배열에 저장되는 원소, n은 배열의 최대 크기를 정의하는 정수 값)

 - create, retrieve, store


3. 배열의 연산의 구현


4. 1차원 배열

- 한 줄짜리 배열, 하나의 인덱스로 구분

- A[i]는 배열의 첫번째 원소 A[0]이 저장된 주소인 a로부터 시작하여, A[0]부터 A[i-1]개까지 i개의 배열 A[]를 지나서 저장됨

- 따라서, A[]의 시작주소를 a라고 가정하면 , A[i]의 저장주소는 [a+i*k]가 됨


5. 배열의 확장

- 행렬의 배열 표현

- 행 우선 할당

- 열 우선 할당

- C언어에서의 2차원 배열 > 행 우선 순서 저장


6. 희소행렬의 개념

- 원소값이 0인 원소가 그렇지 않은 원소보다 상대적으로 많음


-희소행렬의 일반적 배열표현 > 메모리 낭비..

 >> 메모리 낭비를 막고 효율성을 높이기 위해서 0인 원소는 저장하지 않고 0이 아닌 값만을 따로 모아서 저장하는 방법이 필요함




선행과목이 이산수학이랑 C 였나보다.. 둘다 안들었는데 흐흐

이제 슬슬 어려워지기 시작한다.