DataStructure

Fundamental data structures

taeskim 2017. 3. 27. 10:47

데이터의 기본 종류에는

  • Contiguous data structures는 연속적으로 또는 인접한 메모리 섹터에 데이터를 저장하는 것을 의미한다. 이와 같은 예로는 Array, Heaps, Matrices, Hash table등이 존재합니다.
  • Linked data Structures는 Pointers에 의해 묶여 있는 메모리의 구분된 섹터로 구성됩니다. 예들은 리스트, 트리, 그래프를 포함합니다.

Contiguous data structures

  1. Arrays

가장 단순한 형태인 선현적인 Array이는 1차원적인 array입니다.

이와 같은 형태입니다. 각 element는 ai라는 형태를 띄게 되며 여기서 i는 정수 값으로서 0~n까지의 값을 가지게 됩니다. 고차원적인 array이는

와 같은 형태를 가지게 됩니다. 여기서의 aij는 i는 row의 값을 j는 column의 값을 가지게 됩니다.

스위프트에서 array를 선언할 수 있는 방법은 3가지가 있습니다.

  1. var array1: Array = [1,2,3,4,5]
  2. var array2: [Int] = [1,2,3,4,5]
  3. var array3 = [1,2,3,4,5]

와 같은 방식으로 배열을 정의할 수 있습니다. 3번째와 같은 방식은 타입을 추론하는 것으로 compile 단계에서 여러분이 입력한 값의 타입을 추론하여 타입을 결정하게 되는 것입니다. 3번째와 같은 방식을 우리는 주로 사용하게 될 것입니다.

지금까지는 1차원적인 Array이였다면 이제는 고차원적인 array를 한번 만들어 보겠습니다.

간단합니다. array를 사위 array로 묶어 주면서 만들어 주면 됩니다. 예를 들어서..

  • var array4 = [[1,2],[3,4],[5,6]]

와 같이 만들어 주면 됩니다.

인자 추출하기

var myIntArray = [1,2,3,4,5] 와 같이 정의 했고 우리가 만약 index값을 알고 있다면 이를 쉽게 추출할 수 있습니다.

myIntArray[1]

또는 for - in loop를 통해서 전체 값을 순환 할 수도 있을 것입니다.

for element in myIntArray { print(element) }

특정 범위의 인덱스 값을 가져올 수도 있습니다.

var someSubset = myIntArray[2...4] print(someSubset)

2차원적인 array를 생성해 보도록 하겠습니다.

var my2DArray = [[1,2],[3,4],[5,6]]

var element = my2DArray[0][0] var element2 = my2DArray[1][1]

Adding elements

다양한 method를 통해서 adding 할 수 있는데 먼저 뒤에 붙이는 것, 특정 index에 넣는 것을 보겠습니다.

var array2 = [1,2,3,4,5] array2.append(7) print(array2) array2.insert(6, at: 5) print(array2)

elements 지우기

이미 선언한 array2에서 element를 지워보도록 하겠습니다.

array2.removeLast() print(array2)

특정 인덱스의 element를 지울 수도 있습니다.

array2.remove(at: 5) print(array2)