01. 배열의 정의
- 일정한 차례나 간격에 따라 벌려놓는것 그냥 순서대로....
- 메모리의 위치를 순서적으로 결정하는 특징
- 중요한거는 원소값의 물리적 순서....
- 딕셔너리는 value와 key로 구성이 되지만 배열은 그저 인덱스값으로 순서를 정한다.
02. 배열의 추상 자료
추상자료형
- 객체 및 관련된 연산의 정의로 구성
- 자료구조 구현전의 설계단계
자료형
- 메모리 저장 할당을 위한 변수선언
- 자료구조의 구현 단계 근데 먼소리임??
03. 배열 연산의 구현
배열의 생성
작업을 보면 a의 n번째의 작업물까지 데이터를 생성하는 단계라고 생각하면 된다.
일단 a~~방과 그안의 데이터를 0이라는걸 넣는 개념.... null을 넣지 왜....
배열값의 검색(retireve)
자 이번에는 배열값으로 검색하는건데 사용자가 몇번째꺼 꺼내줘 하고 n이라는 값을 주면 db에서 일일히 데이터를 확인하고 해당하는 순서의 값을 가져오는 방식인데 이거는 데이터가 많아지만 많아질수록 검색속도가 낮아지기 때문에 인메모리 즉 value와 key의 쌍으로 가지고 있는 딕셔너리(redis) 같은거를 쓰는게 효율적이다.
희소행렬
대부분의 원소가 0인 행렬 다시 말해서 0이 아닌 원소의 수가 전체 원소에 비해 매우 적은 행렬이라는데 이게 뭔소린지를 모르겟다.
그레서 더 자세한 설명을 하자면 예를 들어 아래와 같이 6 * 6 크기의 행렬이 있다 라고 하면 여기서 0이 아닌 원소는 9, 0인 원소는 27 이니까 희소행렬이라고 하는데 이게 또 먼소리인가 싶다...
여기서 제일 중요한 포인트는 전체 원소에 비해 매우 적은 행렬 이라는거다.
예를 들어서 36개의 행렬중에 12개의 원소가 0이 아니다 라고 하면 (행 + 열 + 값) * 0이 아닌 원소개수 = 36 이 되니 효율이 좋지는 않다는 것이다. 왜 총 36개의 행렬인데 이것과 값이 같거나 많으니까.
그레서 이거 보다 적으면 효율이 좋다고 하는데.... 뭔소린지 모르겟으니 다음 사진을 보자면....
이것을 보면 알겠지만 0이 아닌 것만 저장을 하는데
첫번째 인덱스인 0에는 총 행의 갯수 열의 갯수 0이 아닌 나머지 숫자 총합이 되고
나머지는 해당하는 행 열 값이 저장이 되서 좋다고는 하는데 가장 중요한거는 0이 아닌 원소가 매우 적은 원소값일때 라는거다...
좋은점은 당연히 메모리 낭비를 막고 효율성 향상을 시킨다고 한다..
단점은 연산할게 많다... 고로 컴퓨터가 연산을 많이해서 시간이 증가한다...