๋ฐฐ์ด(Array)
๋ฐฐ์ด์ ๊ฐ์ ๋์ดํ๊ณ , ๊ฐ ๊ฐ์ ์ธ๋ฑ์ค์ ๋์ํ๋๋ก ๊ตฌ์ฑํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฐฐ์ด์ด ํ์ํ ์ด์
- ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ
- ๊ฐ์ ์ข ์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅ
์ฅ์
- ๊ฐ์ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. (์๊ฐ๋ณต์ก๋ O(1))
๋จ์
- ์ค๊ฐ์ ๊ฐ์ ์ถ๊ฐ, ์ญ์ ํ๊ธฐ๊ฐ ์ฝ์ง ์๋ค.
- ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํ ๋นํด์ผํ๋ค. ๋๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ณํ ์ ์๋ค.
์์ ๋ด์ฉ๋ค์ ์๋ฐ๋ก ์๋ฅผ ๋ค์ด์ ์์๋ณด๋ ค๊ณ ํ๋ค.
์ฐ์ ๋จผ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๋๋ฐ, ์์ ๋จ์ ์ ์ค๋ช ํ๋ฏ์ด ๋ฐฐ์ด์ ์ ์ธํ ๋ ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํ ๋นํด์ผํ๋ค.
๊ทธ๋์ ์๋์ ๊ฐ์ด ํฌ๊ธฐ๊ฐ 7์ธ ๋ฐฐ์ด์ ํ๋ ๋ง๋ค์ด์ฃผ์.
int[] arr = new int[7];
์์ ๊ทธ๋ฆผ์ฒ๋ผ ํฌ๊ธฐ๊ฐ 7์ธ ๋ฐฐ์ด์ด ์์ฑ๋๋ค. intํ์ ๋ฐฐ์ด์ ์์ฑํ๊ธฐ ๋๋ฌธ์ int ์๋ฃํ์ ๊ธฐ๋ณธ๊ฐ์ธ 0์ด ๋ชจ๋ ์์น์ ์ ์ฅ๋์ด ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ผ๋ ๊ฐ๋ ์ด ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐฐ์ด์ ๊ฐ์ ์กฐํ,์ถ๊ฐ,์ญ์ ๋ฅผ ํด์ผ ํ๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ธ๋ฑ์ค๋ 0๋ฒ๋ถํฐ ์์ํ๋ค. ๋ฐฐ์ด ์ฒซ ๋ฒ์งธ ์์น์ 5๋ผ๋ ๊ฐ์ ์ ์ฅํ๊ณ ์ถ์ผ๋ฉด ์ธ๋ฑ์ค 0๋ฒ์ 5๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ด๋ฅผ ์ฝ๋๋ก ํํํ๋ค๋ฉด ์๋์ ๊ฐ๋ค.
arr[0] = 5;
์์ ๊ฐ์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ ํ์ฌ ์ถ๊ฐ ๋๋ ์ญ์ ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ, ์ญ์ ์ O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ ๊ทผ์ ํ ๋๋ ๋น์ฐํ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผ์ ํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ ๋ํ O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋๋ค.
ํ์ง๋ง ์ด๋ค ํน์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ์ฆ, ๊ฒ์์ ํ ๋๋ ๋ฐฐ์ด์ ์์ฐจ๊ฒ์์ ํ์ฌ ๊ฐ์ ์ฐพ์์ผํ๋ค.
๋ฐฐ์ด์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ํ๋ํ๋ ํ์ธํด์ ์ฐพ์์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[7];
arr[0] = 5;
System.out.println(indexOf(arr, 5));
}
public static int indexOf(int[] arr, int searchValue) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == searchValue)
return i;
}
return -1;
}
}
ํน์ ๊ฐ์ด ์์นํ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๋ indexOf ๋ฉ์๋๋ฅผ ์์ ๊ฐ์ด ๊ตฌํํด๋ดค๋ค. ์์ ์์ ์ฒ๋ผ ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ๋ฐฐ์ด์ ์ํํ์ฌ ๊ฐ์ ์ฐพ์์ผํ๋ค. ์ง๊ธ ์์ ์์ ๋ก๋ 0๋ฒ์ 5๋ผ๋ ๊ฐ์ด ๋ค์ด์๊ธฐ ๋๋ฌธ์, O(1)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ฐ, ๋ง์ฝ ์ฐพ์ผ๋ ค๋ ๊ฐ์ด ๋งจ ๋ง์ง๋ง ๋ฐฐ์ด์ ์์นํ ๊ฒฝ์ฐ์๋ O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ์๊ฐ ๋ณต์ก๋๋ ์ต์ ์ ์ํฉ์ ํํํ๋ฏ๋ก ๋ฐฐ์ด์ ๊ฒ์์ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋๋ค.
์๊ฐ ๋ณต์ก๋
- ์ถ๊ฐ, ์ญ์ : O(1)
- ๊ฒ์ : O(n)
'๐ ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] 05. ํด์ฌ ํ ์ด๋ธ(Hash Table) (0) | 2023.06.19 |
---|---|
[์๋ฃ๊ตฌ์กฐ] 04. ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) (0) | 2023.06.09 |
[์๋ฃ๊ตฌ์กฐ] 03. ์คํ(Stack) (0) | 2023.06.07 |
[์๋ฃ๊ตฌ์กฐ] 02. ํ(Queue) (0) | 2023.06.01 |