반응형
배열의 정렬
- 선택 정렬 : 배열을 전부 탐색하여 최소값을 고르고 왼쪽부터 채워나가는 방식
- 버블 정렬 : 인접한 두 개의 원소를 검사하여 정렬하는 방법
- 사입 정렬 : 인접한 두 개의 원소를 검사하여 정렬하는 방법
- 변수는 하나의 값만 저장 가능하므로 값을 대입하면 이전의 값은 소면된다. 때문에 임시변수를 하나 생성하여 기존의 값을 따로 보관하고 대입 작업을 통해 값을 서로 변경해야 한다.
arr배열의 값을 132로 변경해보자
int[] arr = {2, 1, 3};
int temp1;
temp2 = arr[0]; => 새로운 변수안에 arr 인덱스 0번 값을 저장한.
arr[0] = arr[1]; =>arr인덱스 0번 값은 비워져 있으므로 값을 변경할 수 있다.
arr[1] = arr[2];
arr[2] = temp2;
for(int num : arr) {
System.out.print(num + " ");
}
◇ 실행 결과
1 3 2
반응형
- 오름차순으로 정렬하기
ⓐ int[] iarr = {2, 5, 4, 6, 1, 3};
ⓑ for(int i = 1; i < iarr.length; i++) {
ⓒ for(int j = 0; j < i; j++) {
ⓓ if(iarr[i] < iarr[j]) {
ⓔ int temp;
temp = iarr[i];
iarr[i] = iarr[j];
iarr[j] = temp;
}
}
ⓕ System.out.println("정렬 완료 : " + Arrays.toString(iarr));
◇ 실행 결과
정렬 완료 : [1, 2, 3, 4, 5, 6]
ⓐ 초기 배열 선언 및 초기화한다.
ⓑ 인덱스를 한 개씩 증가시키는 반복문을 작성한다. 첫 번째 인덱스는 비교할 필요가 없으니 0번 이후인 1번 인덱스부터 비교할 수 있게 작성한다.
ⓒ 1번인덱스부터 5번 인덱스까지 반복하는 반복문을 작성한 후, 앞의 값과 비교할 수 있는 반복문을 작성한다. (인덱스가 증가할 때마다 처음부터 해당 인덱스 -1까지의 값을 비교할 수 있게 작성한다. ex ) i가 1일때 j는 0까지, i가 2일때 j는 01까지)
ⓓ j가 i보다 작을 동안(j<i;) iarr의 i값과 iarr의 j값을 비교한 후 바꿔줘야하는지 판단할 수 있는 조건문 작성한다.(내림차순으로 구현하고자 한다면 부등호 방향을 반대로 처리하면 된다)
ⓔ값을 바꿀때 필요한 임시 변수 생성 후 값 위치를 변경한다.
ⓕ for문의 결과를 출력할 수 있는Arrays.toString()을 이용하여 값을 출력한다.
- 배열 중복 제거하기
→ 10개짜리 int형 배열에 1~20 사이의 난수 값을 채우고 중복없이 출력해보자.
int[] arr = new int[10];
for(int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20) + 1;
for(int j = 0; j < i; j++) {
if(arr[i] == arr[j]) {
i--; (i값을 줄여준다. 중복시 다음 인덱스로 넘어가지 않고
해당 인덱스위치에서 다시 난수 값을 뽑는다)
}
}
}
System.out.println(Arrays.toString(arr));
반응형
'프로그래밍 > java' 카테고리의 다른 글
[자바JAVA] 객체 지향 언어(OOP) & DTO 작성 방법 (0) | 2022.07.07 |
---|---|
[자바JAVA] 클래스(class)_객체 생성, 전역변수, 접근제한자, this. (0) | 2022.07.07 |
[자바JAVA] 다차원 배열 (2차원 배열) & 얇은복사와 깊은복사 (0) | 2022.07.07 |
[자바JAVA] 배열(Array)_ 1차원 배열 (0) | 2022.07.05 |
[자바JAVA] 제어문 _ 조건문(if문과 switch문) (0) | 2022.07.05 |