자료구조 - 배열(Array)

시디·2022년 1월 9일
0

자료구조

목록 보기
1/4

데이터를 나열해 인덱스에 대응하도록 구성한 자료구조

배열의 특징

  1. 고정된 크기를 가지며 일반적으로는 동적으로 크기를 늘릴 수 없다.
  • 대부분의 스크립트 언어(자바스크립트 등)는 동적으로 크가 증감되도록 만들어져 있다.
  1. 원하는 원소의 index를 알고 있다면 O(1)의 시간복잡도로 원소를 찾을 수 있다.

  2. 원소를 삭제하면 해당 index에 빈자리가 생긴다.

✅  장점 : 인덱스로 데이터에 접근할 수 있어 접근이 빠르다.

✅  단점 : 데이터의 추가와 삭제가 비효율 적이다.

❗️배열의 요소를 삭제하거나 추가할 경우 O(n)의 시간복잡도가 발생한다. 따라서 추가/삭제 등이 자주 사용되는 로직에서는 배열 사용을 지양해야 한다.

자바스크립트 배열

  • 배열의 길이가 동적이다.
  • 한 배열안에 여러가지 자료형이 존재할 수 있다.

✅ 배열 생성

  1. 빈 Array 생성
let arr1 = [];
  1. 미리 초기화된 Array 생성
let arr2 = [1,2,3,4,5];
  1. 모든 요소를 같은 값으로 초기화 할 경우 fill사용
let arr3 = Array(10).fill(10);
  1. 특정 로직을 사용하여 초기화 할 경우 from 사용
const arr4 = Array.from(Array(5),function(v,k){
	return k+1;
});
const arr5 = Array.from({ length:100},(_,i)=>i);

✅  데이터 추가, 삭제
1. push : Array의 맨 뒤에 요소 추가

arr1.push(1);//시간복잡도 : O(1)
arr1.push(2,3,4);//여러개를 한 번에 추가도 가능, 시간복잡도 : O(1)
  1. splice : 해당 인덱스에 요소 추가/삭제
arr1.splice(1,0,22);//1번 인덱스부터 0개를 삭제하고 22를 추가 하겠다, 시간복잡도 : O(n)
arr1.splice(1,1)//1번 인덱스부터 1개를 삭제하겠다, 시간복잡도 : O(n)
  1. pop : 배열의 마지막 요소를 삭제하고 해당 요소를 반환해주는 함수
arr1.pop();
  1. shift : 맨앞의 요소를 삭제하는 함수
arr1.shift();
  1. unshift : 맨앞에 요소를 추가해주는 함수
arr1.unshift(11);
  1. slice : 중간의 요소를 자르기
arr1.slice(2,3);//2번 인덱스부터 3번 인덱스 까지의 요소를 잘라내겠다.

✅  배열의 함수

  1. join : 배열을 문자열로 합쳐주는 함수
let joindeArr1 = arr1.join(",");
  1. reverse : 배열을 거꾸로 뒤집어주는 함수
  • 한번 사용하면 원래의 배열이 뒤집어 지기 때문에 기존의 배열을 사용하기 위해서는 새로운 배열을 만들어서 사용하는 것을 권장
let arr1Copy = arr1;
const revArr1 = arr1Copy.reverse()
  1. concat : 배열을 연결시켜주는 함수
const contactedArr = arr1.concat(revArr1);

✅  배열의 순회 : for of 사용

for (const item of arr1){
	console.log(item);
}
profile
콰삭칩을 그리워하는 개발자 입니다.

0개의 댓글