배열과 리스트
해당 게시물은 신찬수 교수님의 자료구조 강의를 듣고 이해한 내용을 바탕으로 작성하였습니다. 링크
배열과 리스트
배열
int A[4] = {2,4,0,5};
A[2] = A[2] + 1;
//쓰기, 대입, 읽기, 산술 연산이 있음
- 읽기 쓰기 대입 산술 연산이 일어남
A[0]
의 주소에 2라는 값이 저장되어있음- 기본연산은 O(1) 만큼의 시간 복잡도를 가짐
- 만약 int형 배열인 A에서
A[2]
의 주소를 구하는 방법은A[0]
의 주소에서 4bytes씩 2번 건너뛴 번지수가 됨 index
로 배열의 특정 위치의 값을 산술시간 내에 읽고 쓸 수 있게 제공되는 자료구조- 동적으로 용량을 조절하려면 따로 구현해야함.
C
나Java
언어 등에 있음
리스트
A = [2,4,0,5]
A[2] = A[2] + 1
A.append(6) # 맨 뒤에 6을 삽입
A.pop() # 맨 뒤의 값을 지우고 리턴
A.pop(1) # A[1]을 제거하고 리턴
A.insert(1,10) # A[1]에 10을 삽입
A.remove(value) # A에서 처음으로 나온 value 값을 찾아 제거
A.index(value) # A에서 처음으로 나온 value값의 인덱스 값을 리턴
A.count(value) # A에서 value값이 몇 개인지 리턴
- 2, 4, 0, 5는 각각 객체가 됨
- 위 예제에서
A[0]
는 2라는 값이 저장된 주소를 가리킴 <- 나는 이것이 제일 큰 차이점으로 느껴졌음 A[2] = A[2] + 1
즉 왼쪽의 계산을 하면 결과는 1인데 1이라는 객체가 생기고 이걸 새롭게 가리키게 됨, 원래의 0이라는 객체는 어딘가에 남아는 있음Python
에서 제공됨- 리스트와 배열의 큰 차이점은 리스트는 용량 자동 조절이 가능하다. 복잡한 구현으로 이루어짐