🗄️ Backend/Java
자바(Java) - 배열과 문자열 (3) 배열
kongmi
2023. 1. 9. 18:08
버블정렬
1차원 배열을 이용한 버블 정렬 : 가장 비효율적이지만 구현하기 쉬운 정렬 방식
package 버블정렬0109;
public class ArrayBubbleSort {
public static void main(String[] args) {
int[] arr = {9,24,13,10,5,78,7,6,2,11};
int tmp = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = i; j < arr.length; j++) {
if(arr[i] > arr[j]) {
tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
}
for (int e : arr) System.out.print(e + " ");
}
}
2차원 배열
package 중첩Array0109;
public class DoubleArrayEx {
public static void main(String[] args) {
int[][] arr = new int[2][3]; // 2행 3열
int k = 10;
for(int i = 0; i < arr.length; i++) { // 행의 갯수를 알 수 있음
for(int j = 0; j < arr[i].length; j++) { // 열의 갯수
arr[i][j] = k;
k += 10;
}
}
// 전통적인 for문
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
// 향상된 for문
for(int[] row : arr) {
for(int e : row) System.out.print(e + " ");
System.out.println();
}
}
}

배열의 복사
System.arraycopy() : 배열값을 복사할 때 사용
package 배열의활용0109;
import java.util.Arrays;
public class ArrayApply {
public static void main(String[] args) {
int[] arr1 = {90,45,77,80,55}; // 원본 데이터
int len = 10;
int[] arr2 = new int[len];
for(int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
System.arraycopy(arr1, 0, arr2, 4, arr1.length);
}
}
Arrays.copyOf() : 배열을 원하는 길이 만큼 새로운 배열로 복사
package 배열의활용0109;
import java.util.Arrays;
public class ArrayApply {
public static void main(String[] args) {
int[] arr1 = {90,45,77,80,55}; // 원본 데이터
int[] arr3 = Arrays.copyOf(arr1, 10);
System.out.println(Arrays.toString(arr3));
}
}
깊은 복사 : 할당된 메모리 공간에 실제 값이 복사 되는 것(기본 타입 모두 여기에 해당함)
얕은 복사 : 참조 타입에 해당되며 실제 값이 복사가 되는 것이 아니라 주소가 복사되는 것을 의미
따라서, 참조 타입의 경우 실제 값을 복사하려면 위의 배열의 복사 방법을 이용하면 된다.
package 깊은복사얕은복사0109;
import java.util.Arrays;
public class DeepCopy {
public static void main(String[] args) {
// 깊은 복사
int x = 100;
int y;
y = x;
x = 200;
System.out.println(y);
// 얕은 복사가 발생하는 경우
int[] arr1 = new int[4];
arr1[0] = 100;
int[] arr2 = arr1; // 얕은 복사가 일어남
arr1[0] = 300;
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}