[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
int a[3] = {1, 2, 3 }
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
→ ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
→ K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 20
[배열의 정의]
- 사전적 정의 : 일정한 차례나 간격에 따라 벌여 놓음.
- 배열의 특징 : 원소의 메인 메모리 공간(메인 메모리 주기억 장치)에서의 물리적 위치를 ‘순서’적으로 결정
- 메모리 공간에서의 순서, 즉 ‘물리적 순서’를 자료구조로 표현.
- 배열의 순서 : 메모리 공간에서의 저장되는 ‘원소값의 물리적 순서’
- 배열 : 인덱스와 원소값(<index, value>)의 쌍으로 구성된 집합. 정의된 각 인덱스는 그 인덱스와 관련된 값을 가짐.
- 배열의 특성 : 모두 같은 자료형 → 동질의 값과 기억 공간의 크기가 같다.
- 각 원소의 물리적 위치(메모리 주소)의 순서가 배열 인덱스 순서(논리적 순서)와 일치
- → 배열의 첫 번째 원소가위치하는 메모리 주소를 알면 인덱스를 이용해 임의의 배열 원소의 주소값을 계산할 수 있음
- —> 4. 일차원 배열에서 자세히 설명
- 물리적 순서(메모리 주소값)과 간단한 숫자 순서(인덱스값)의 관계→ 개발자는 프로그램에서 선언한 배열과 인덱스값을 이용하여 알고리즘을 작성하고, 그 알고리즘에 따라 프로그램을 완성. 운영체제는 개발자의 추상화된 값과 컴퓨터의 물리적인 값을 연결시켜주고 사용자에게 it 서비스 제공. +) 프로그래밍 언어는 개발자와 운영체제 간의 의사소통을 위한 방법
[배열의 추상 자료형]
- 배열의 추상 자료형 : 객체 및 관련된 연산의 정의로 구성됨. (자료구조 구현 전 설계단계)
- 자료형 : 메모리 저장 할당을 위한 변수 선언 (자료구조의 구현 단계) ex) int a[3]
- Adt Array 객체 : 인덱스와 값 <i,e> 쌍들의 집합
- (ADT : abstract data type : 추상 자료형)
- Index : 순서를 나타내는 원소의 유한집합
- Element : 자료형이 같은 원소의 집합
- 연산 : a∈Array; i∈Index; item∈Element; n∈Integer인 모든a, item, n에대해여다음과같은연산이정의됨.
- a는 배열 이름 / i는 인덱스 / e는 원소값 / n은 배열의 크기
- ① Array create(n) ::= 배열의크기가n인빈배열을생성하고배열을반환한다; ② Element retrieve(a,i)::= if (i∈Index) then { 배열의i번째에해당하는원소값‘e’를반환한다; } else { 에러메시지를반환한다; } ③ Array store(a, i, e) ::= if (i∈Index) then { 배열a의i번째위치에원소값‘e’를저장하고배열a를반환한다; } else { 인덱스i가배열a의크기를벗어나면에러메시지를반환한다; }
- create(n) 연산 : n개의 원소를 저장할 수 있는 공백 배열을 생성
- retrieve(a,i) 연산 : 배열a에서 i번째에 해당하는 인덱스를 검색하여 원소값을 반환
- sotre(a,i,e) 연산 : 배열 a의 i번째 인덱스에 e라는 원소값을 저장하라는 연산
[배열의 연산의 구현]
- 배열의 생성(create)
- 배열의 매모리 공간 정의 → 반복문으로 초기값 0 저장
- 배열값의 검색(retrieve)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값 리턴 → i값 유효하지 않으면 error
- 배열값의 저장(store)
- 인덱스 범위 정의 → 함수이름 정의 및 매개변수 전달 → 인덱스값 유효한지 비교 → 조건 참이면 a의 i번째 값에 e 저장 → i값 유효하지 않으면 error 출력
- a[3] = 35; 라고 a의 3번째 인덱스에 35를 대입시키면 sotre 함수 호출을 통해 값을 저장시킴
[1차원 배열]
- 한줄짜리 배열. 메모리 영역도 한줄로 할당. 배열의 원소들은 컴퓨터 메모리의 연속적 기억장소에 할당되어 순차적으로 저장.
- 만약 시작주소가 1 , 각 자료형 크기가 3 이라고 하면 A[3] 저장 주소는 1+3*3 = 10.
[배열의 확장]
- 2차원 배열 → 1차원 배열을 여러개 쌓아 놓은 것
- 행렬은 객체관의 관계, 네트워크의 시뮬레이션, 최단거리 계산 등에서 사용되는데, 행렬을 컴퓨터에서 표현하기에는 2차원 배열이 적합함.
- 2차원 배열애서 하나의 원소는 두개의 첨자 i(행), j(열)로 표현 ex) A[i][j]
- 행우선 저장 방식 : 1차원 배열을 가로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법.
- 하나의 행을 연속적으로 메모리에 할당하고, 그 다음 행을 메모리 영역에 할당
- 동일한 행의 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 행의 첫번째 원소부터 차례대로 저장.
- 코볼, 파스칼, C
- 0행의 값들 먼저 할당, 그다음 1행 할당
- 열우선 저장 방식 : 1차원 배열을 세로로 모아 놓은 2차원 배열의 메모리 영역 할당 방법
- 하나의 열을 연속적으로 메모리에 할당 후 다음열 메모리에 할당
- 동일한 열에 있는 원소를 먼저 차례대로 컴퓨터 메모리에 저장하고 다음 열로 이동하여 첫번째 원소부터 차례대로 저장
- 포트란
- 0열의 값들을 먼저 할당, 그다음 1열, 2열 할당.
[희소행렬의 개념]
- 희소행렬 : 원소값 0인 원소가 그렇지 않은 원소보다 상대적으로 많은 행렬.
- 0의 값을 저장하기 위해 불필요하게 많은 컴퓨터 메모리가 요구되므로, 0인 원소는 저장하지 않고 0이 아닌 값만 따로 모아 저장하는 방법 필요 —> 희소행렬의 효율적 배열 표현.
- 각 원소를 (행번호, 열번호, 원소값) 형태로 나타냄. : 오른쪽 그림 2차원 배열.
- [0,0]은 8, [0,1]은 9, [0,2]은 10
- [1,0]은 0(행 인덱스값), [1,1]은 1(열 인덱스값), [1,2]는 202
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
- → K = a[2]; 라고 K에 a의 2번째 값을 대입시키면 retrieve 함수 호출을 통해 값 반환해서 대입시킴.
- → ex) int a[5]; 라고 배열을 선언하면, 위의 create 연산이 호출되어 컴파일러가 배열을 생성(구현)함.
'책이야기' 카테고리의 다른 글
컴퓨터의 이해 8강. 정보통신기술과 우리 사회 (0) | 2024.11.17 |
---|---|
컴퓨터구조 5장 (2) | 2024.11.10 |
스택과 큐 (0) | 2024.11.03 |
컴퓨터 구조 1강 (0) | 2024.09.01 |
빅데이터의 이해와 활용(1) (0) | 2024.08.18 |