티스토리 뷰
📌 배열의 특징
0(1) 에 k 번째 원소를 확인/변경 가능하다.
: 배열은 메모리상에 원소를 연속하게 배치한 자료구조이기때문에, k번째 원소의 위치를 바로 계산할 수 있다. 단, 임의의 위치에 원소를 추가 또는 제거할 시에는 한칸씩 밀거나 땡겨야 하므로, O(N)의 시간이 걸리게 된다.
🍉추가적으로 소모되는 메모리의 양(=overhead)가 거의 없다.
: 연결리스트와 비교하자면, 연결리스트는 다음노드의 주소값 또한 가지고 있어야하지만 배열의 경우 순서대로 주소가 정해지기때문에 메모리의 낭비가 적다.
🍉메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸린다.
public static void insert_test(){
System.out.println("***** insert_test *****\n");
int arr[] = new int[10];
arr[0] = 10 ;arr[1]=20;arr[2] = 30;
int len = 3;
insert(3, 40, arr, len); // 10 20 30 40
printArr(arr, len);
insert(1, 50, arr, len); // 10 50 20 30 40
printArr(arr, len);
insert(0, 15, arr, len); // 15 10 50 20 30 40
printArr(arr, len);
}
static void insert(int idx,int num,int[] arr,int len) {
for (int i=arr.length-2;i>=idx;i--) {
arr[i+1] = arr[i];
}
arr[idx] = num;
}
( erase )
static void erase_test(){
System.out.println("***** erase_test *****\n");
int arr[] = {10, 50, 40, 30, 70, 20,0,0,0};
int len = 6;
erase(4, arr, len); // 10 50 40 30 20
printArr(arr, len);
erase(1, arr, len); // 10 40 30 20
printArr(arr, len);
erase(3, arr, len); // 10 40 30
printArr(arr, len);
}
static void erase(int idx, int[] arr, int len){
for (int i=idx;i<len;i++) {
arr[i] = arr[i+1];
}
}
'ALGORITHM' 카테고리의 다른 글
[ 알고리즘 ] 2. 연결리스트 (0) | 2020.03.26 |
---|---|
[ 4주차 ] 동적 계획법 (0) | 2019.12.01 |
[ 2주차 ] 리스트, 스택, 큐, 해시 (0) | 2019.11.16 |
[ 1주차 ] 완전탐색, 정렬, 문자열 (0) | 2019.11.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 독후감
- taggit
- 파이썬
- go context
- 의대 신경학 강의
- conTeXt
- 방금그곡
- 문자열 뒤집기
- Two Scoops of Django
- leetcode
- 백준
- ManyToMany
- dfs
- query
- gunicorn
- 팰린드롬수
- 프로그래머스
- for-else
- 소프트웨어 장인
- sql lite
- django
- Python
- go
- stdout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함