배열의 정의
배열은 인덱스와 원소값의 쌍으로 구성된 집합을 말하며 원소의 메모리 공간의 물리적인 위치를 순서대로 결정하는 특징을 가지고 있습니다.
인덱스는 실제 메모리의 물리적인 위치값을 추상화해서
배열을 생성할때마다 메모리 주소값은 달라져도 항상 같은 순서를 유지하며 검색할 수 있습니다.
원소들은 모두 같은 자료형과 같은 크기의 기억 공간을 가집니다.
배열의 인덱스 값을 이용해서 배열의 원소값에 접근하기에 직접 접근이 가능합니다.
배열의 추상 자료형
추상자료형: 객체 및 관련된 연산의 정의
개발자를 위해서 내가 정의한 데이터 형식을 특징을 설명할때 사용
데이터를 정의해서 접근하여 연산자를 따로 정의하는 것
자료형: 메모리 저장 할당을 위한 선언
내가 변수에 대해서 메모리 할당을 받기 위해 선언하는것
1차원 배열
1차원 배열은 한 줄 짜리 배열을 의미하며 하나의 인덱스로 구분됩니다.
A[i]는 배열의 첫 번쨰 원소 A[0]이 저장된 주소인 a로부터 시작하여, A[0]부터 A[i-1]개까지 i개의 배열 A[]를 지나서 저장됩니다.
따라서 A[]의 시작주소를 a라고 가정하면, A[i] 저장 주소는 [a + i * k]가 됨
2차 배열
2차원 배열로 행렬을 표현할 수 있습니다.
행렬은 행 우선 할당 또는 열 우선 할당이 있습니다.
행 우선 할당은 가로의 1차원 배열 단위로 메모리 영역에 우선 할당하며
열 우선 할당은 세로의 1차원 배열 단위로 메모리 영역에 우선 할당합니다.
c언어 에서는 2차원 배열을 행 우선 할당을 사용합니다.
행 우선 할당이기에 메모리에 순서대로 i, j에 접근해서 가져온다.
메인 메모리에서는 j,i를 바꿔도 문제가 안되나 보조 저장장치에서는 트랙이나 실린더를 바꾸는 문제를 발생시킬수 있다.
희소 행렬의 개념
희소 행렬은 원소값이 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 것을 말한다.
메모리 낭비를 막고 효율성을 높이기 위해서 0인 원소는 저장하지 않고 0이 아닌 값만을 따로 모아서 저장하는 방법을 사용한다.