1. ๋ฐฐ์ด์ ์ ์
1.1 ๋ฐฐ์ด์ ์ ์
์ธ๋ฑ์ค์ ์์๊ฐ(index, value) ์ ์์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ผ๋ก ์ ์๋ ๊ฐ ์ธ๋ฑ์ค๋ ๊ทธ ์ธ๋ฑ์ค์ ๊ด๋ จ๋ ๊ฐ์ ๊ฐ์ง๋ค.
1.2 ๋ฐฐ์ด์ ํน์ฑ
- ์์๋ค์ด ๋ชจ๋ ๊ฐ์ ์๋ฃํ, ์ฆ ๋์ง์ ๊ฐ๊ณผ ๊ธฐ์ต ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ค.
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ฌผ๋ฆฌ์ ์ธ ์์น(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)์ ์์๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์์(๋ ผ๋ฆฌ์ ์์) ์ ์ผ์นํ๋ค.
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๊ฐ์ ์ด์ฉํด์ ๋ฐฐ์ด์ ์์๊ฐ์ ์ง์ ์ ๊ทผ(direct access) ํ๋ค.
→
๋ฐฐ์ด์ ์ธ๋ฑ์ค ๋ฒํธ๋ ์ฌ๋(๊ฐ๋ฐ์)๊ฐ ์ดํดํ ์ ์๋๋ก ์ ์ํ (์ถ์ํ) ๊ฐ์ด๋ค.
๋ฐฐ์ด์์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์๊ณ ์์ ๋ ์์๋ฅผ ์ฐพ์๋ด๋ ๋ฐฉ๋ฒ์ ์๊ฐ๋ณต์ก๋๋ฅผ O(1)๋ก ๋๋ ์ด์ ์ ๋ํด ๊ถ๊ธํ์๋๋ฐ, ์ด๋ ๋ฐฐ์ด์ด ์์ ์ฃผ์๋ก๋ถํฐ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒ ์ด์์.
2. ๋ฐฐ์ด ์ถ์ ์๋ฃํ
ADT Array
- objects: <i∈\in Index, e∈\in Element> ์๋ค์ ์งํฉ. ์ฌ๊ธฐ์ Index๋ ์์๋ฅผ ๋ํ๋ด๋ ์์์ ์ ํ์งํฉ์ด๊ณ Element๋ ํ์ ์ด ๊ฐ์ ์์์ ์งํฉ
- ๋ฐฐ์ด ๊ฐ์ฒด์ ์ ์: <i∈\in Index, e∈\in Element> ์๋ค์ ์งํฉ์ด๋ฉฐ, Index๋ ์์๋ฅผ ๋ํ๋ด๋ ์ ์๊ฐ์ด๊ณ Element๋ ๊ฐ์ ์๋ฃํ์ ์์๊ฐ
- ์ฐ์ฐ: a∈\in Array; i∈\in Index; x, item∈\inElement; n∈\inInteger์ธ ๋ชจ๋ a, item, n์ ๋ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ด ์ ์๋๋ค.(a๋ 0๊ฐ ์ด์์ ์์๋ฅผ ๊ฐ๋ ๋ฐฐ์ด, item์ ๋ฐฐ์ด์ ์ ์ฅ๋๋ ์์, n์ ๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํ๋ ์ ์๊ฐ)
- Array create(n) → ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n์ธ ๋น ๋ฐฐ์ด์ ์์ฑ ํ ๋ฐฐ์ด์ ๋ฐํ.
- Element retrieve(a, i)if i∈\in Index:else ์ธ๋ฑ์ค i๊ฐ ๋ฐฐ์ด a์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํ
- then ๋ฐฐ์ด a์ i๋ฒ์งธ ์์น์ ์์๊ฐ 'e' ๋ฐํ
- Array store(a, i, e)if i∈\in Index:else ์ธ๋ฑ์ค i๊ฐ ๋ฐฐ์ด a์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํ
- then ๋ฐฐ์ด a์ i๋ฒ์งธ ์์น์ ์์๊ฐ 'e'๋ฅผ ์ ์ฅ ํ ๋ฐฐ์ด a๋ฅผ ๋ฐํ
3. ๋ฐฐ์ด์ ์ฐ์ฐ์ ๊ตฌํ
๋ฐฐ์ด ์ถ์ ์๋ฃํ์ ์ฐ์ฐ์ ์์ฝ
- create: ๋ฐฐ์ด์ ๊ณต๋ฐฑ ๋ฐฐ์ด๋ก ์์ฑ
- retrieve: i ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅ๋์ด ์๋ ์์๊ฐ์ ๋ฐํํ๋ ์ฐ์ฐ
- store: ์ํ๋ ์์น i๋ฒ์งธ ์ธ๋ฑ์ค์ e ์์๊ฐ์ ์ ์ฅํ๋ ์ฐ์ฐ
3.1 C๋ก ๊ตฌํํด๋ณด๊ธฐ - create
void create(int n) {
int arr[n];
int i;
for(i=0, i<n, i++) {
a[i] = 0;
}
}
3.2 C๋ก ๊ตฌํํด๋ณด๊ธฐ - retrieve
#define array_size 5
int retrieve(int *a, int i) {
if(i >= 0 && i < array_size) return a[i];
else {
printf("Not exist index Exception");
return -1;
}
}
3.3 C๋ก ๊ตฌํํด๋ณด๊ธฐ - store
#define array_size 5
void store(int *a, int i, int e) {
if(i >= 0 && i < array_size) a[i] = e;
else {
printf("Not exist index Exception");
}
4. 1์ฐจ์ ๋ฐฐ์ด
ํ ์ค์ง๋ฆฌ ๋ฐฐ์ด์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ๋ ํ ์ค๋ก ํ ๋น๋ฐ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ์์ A[0]์ ๋ฉ๋ชจ๋ฆฌ ์์์ฃผ์๋ฅผ ๋ผ๊ณ ํ๊ณ ๊ฐ ์๋ฃํ์ ํฌ๊ธฐ k๋ฅผ ์๋ฉด ๊ฐ๋จํ ๊ณ์ฐ์ ํตํด A[i]์ ์ฃผ์๋ฅผ ์ ์ ์๋ค.
5. ๋ฐฐ์ด์ ํ์ฅ
- 1์ฐจ์ ๋ฐฐ์ด์ ํ์ฅ์ 2์ฐจ์ ๋ฐฐ์ด์ด๋ค. ํ์ง๋ง ํ์ฅ ๋ฐฉ๋ฒ์ ์์ด์ ์ฐจ์ด๊ฐ ์๋ค.
- ํ์ฐ์ (raw-major) ํ์ฅ ๋ฉ๋ชจ๋ฆฌ ํ ๋น a[0][0] → a[0][1] → ... → a[1][0] → ...
- ์ด์ฐ์ (column-major) ํ์ฅ ๋ฉ๋ชจ๋ฆฌ ํ ๋น a[0][0] → a[1][0] → ... → a[0][1] → ....
- C์ธ์ด์์๋ 2์ฐจ์ ๋ฐฐ์ด ์ ์ธ ์ ํ์ฐ์ ์ผ๋ก ํ ๋น๋๋ค.
6. ํฌ์ํ๋ ฌ์ ๊ฐ๋
- ํ๋ ฌ ๋ด๋ถ์ ๊ฐ๋น์ง ๋ฐ์ดํฐ๊ฐ ์ง๋์น๊ฒ ๋ง์ ๊ฒฝ์ฐ ํ๋ ฌ์ ์ถ์ํ ํ์ฌ ์ ํจ ๋ฐ์ดํฐ์ ํ๋ฒํธ, ์ด๋ฒํธ, ์์๊ฐ์ ํํ๋ก ์๋ก์ด ํ๋ ฌ์ ์ถ์ถํด๋ธ ๊ฒ0 8 9 102 0 7 11....
- 8 x 9 ํ๋ ฌ ๋ด๋ถ์ ์๋ ์ ํจ๋ฐ์ดํฐ 10๊ฐ์ ์์น๋ฅผ ๊ธฐ๋กํ ํ๋ ฌ (๋๋จธ์ง๋ ๋ค ๊ฐ๋น์ง ๋ฐ์ดํฐ)
- 3 2 0 11
- 1 0 4 9
'๋ ธํธ > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] 6. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์์ฉ (0) | 2022.01.27 |
---|---|
[์๋ฃ๊ตฌ์กฐ] 5. ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2022.01.06 |
[์๋ฃ๊ตฌ์กฐ] 4. ํ (0) | 2022.01.06 |
[์๋ฃ๊ตฌ์กฐ] 3. ์คํ (0) | 2022.01.06 |
[์๋ฃ๊ตฌ์กฐ] 1. ์๋ฃ๊ตฌ์กฐ๋ ๋ฌด์์ธ๊ฐ (0) | 2021.12.20 |