반응형
본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다.
1. 배열의 역순 정렬은 요소 교환이 총 n/2회 필요함.
1) x값을 t에 보관
2) y값을 x에 대입
3) t에 보관한 처음 x값을 y에 대입
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
2. 배열을 역순으로 정렬
배열의의 이름이 a이고 크기가 5라면 역순정렬을 위해서는
(a[0], a[4]), (a[1], a[3]), a[2]의 쌍으로 교환이 되어야 한다.
for문을 활용한다면, i=0부터 시작해서 배열길이의 절반(a.lenght/2)만큼 반복되어야 한다.
static void reverse(int[] a) {
for(int i=0; i<a.length/2; i++) {
swap(a, i, a.length-i-1);
}
}
전체코드
import java.util.Scanner;
public class array_switch {
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
static void reverse(int[] a) {
for(int i=0; i<a.length/2; i++) {
swap(a, i, a.length-1);
}
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("요솟수 : ");
int num = stdIn.nextInt();
int[] x = new int[num];
for(int i=0; i<num; i++) {
System.out.println("x[ "+i+" ]");
x[i] = stdIn.nextInt();
}
reverse(x);
System.out.println("요소를 역순으로 정렬했습니다.");
for(int i =0; i<num; i++) {
System.out.println("x[ "+i+" ] = " + x[i]);
}
}
}
3. 연습문제 : 배열요소 역순정렬 과정과 합을 나타내는 프로그램 작성
import java.util.Scanner;
public class array_reverseEach {
static void swap(int[] a, int idx1, int idx2) {
int temp = a[idx1];
a[idx1] = a[idx2];
a[idx2] = temp;
}
static void reverse(int[] a) {
for(int i=0; i<a.length/2; i++) {
int idx1 = i;
int idx2 = a.length-i-1;
System.out.println("a["+idx1+"]와 a["+idx2+"]를 교환합니다.");
swap(a, idx1, idx2);
for(int j=0; j<a.length; j++) {
System.out.print(a[j]+" ");
}
System.out.println("");
}
System.out.println("역순정렬을 마쳤습니다.");
}
static int sumOf(int a[]) {
int sum=0;
for(int i=0; i<a.length; i++) {
sum += a[i];
}
return sum;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("요솟수 : ");
int num = scanner.nextInt();
int a[] = new int [num];
for(int i=0; i<num; i++) {
System.out.println("a["+i+"]");
a[i] = scanner.nextInt();
}
reverse(a);
int sum = sumOf(a);
for(int i=0; i<a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println("배열요소의 합 : "+ sum);
}
}
반응형
'old > 자료구조_알고리즘' 카테고리의 다른 글
[Java] 검색 - 선형(순차)검색 / 보초법 (0) | 2020.01.27 |
---|---|
[Java] 검색 알고리즘 (0) | 2020.01.26 |
[Java]소수의 나열, 소수인지 판단하는 알고리즘 (0) | 2020.01.26 |
[Java] 기수변환/진수변환 계산기(2진수, 8진수, 10진수, 16진수) (0) | 2020.01.26 |
[Java]배열요소 역순으로 복사하기 (0) | 2020.01.26 |