반응형
1,2,3,4,5,6,7 -> 7,6,5,4,3,2,1로 배열하기
1, 7 교환
2, 6 교환
3, 5 교환
4 교환 (x)
총 3번 루프 필요 ( 전체/2 ) 홀수일 경우 나머지 1개는 교환할 필요가 없기 떄문에 나머지는 버려준다.
* 주의 : a.length는 6 , 배열 최대는 a[5]
package ssss;
public class ant {
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6};
//a.length는 6 , 배열 최대는 a[5]
for (int i = 0; i < (a.length)/2 ; i++) {
int max = a.length- i -1; //6-0-1 , 6-1-1, 6-2-1
int temp = 0;
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
}
}
직접 배열 입력 받아서 역순으로 정렬
package chap02;
import java.util.Scanner;
// 배열 요솟값을 읽어 들여 역순으로 정렬
class ReverseArrayEx_02_02 {
// 배열의 요소 a[idx1]와 a[idx2]를 교환
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
// 배열 a의 요소 값을 나타냄
static void print(int[] a) {
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
// 배열 a의 요소를 역순으로 정렬
static void reverse(int[] a) {
print(a);
for (int i = 0; i < a.length / 2; i++) {
System.out.println("a[" + i + "]와 a[" + (a.length - i - 1) + "]를 교환합니다.");
swap(a, i, a.length - i - 1);
print(a);
}
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("요솟수는 :");
int num = stdIn.nextInt(); // 요솟수
int[] x = new int[num]; // 요솟수 num인 배열
for (int i = 0; i < num; i++) {
System.out.print("x[" + i + "] : ");
x[i] = stdIn.nextInt();
}
reverse(x); // 배열 a의 요소를 역순으로 정렬
System.out.println("역순 정렬을 마쳤습니다.");
// for (int i = 0; i < num; i++)
// System.out.println("x[" + i + "] = " + x[i]);
}
}
결과 :
아래처럼 배열 요소를 역순으로 정렬하는 과정을 하나하나 나타내는 프로그램을 작성하세요.
5 10 73 2 -5 42
a[0]과 a[5]를 교환합니다.
42 10 73 2 -5 5
......
package chap02;
public class test {
public static void main(String[] args) {
int[] a = {5, 10, 73, 2, -5, 42};
reverse(a);
}
static void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
static void reverse(int[] a) {
print(a);
for (int i = 0; i < (a.length)/2; i++) {
int max = a.length-i-1;
System.out.println(a[i] +"와 " + a[max] +"를 교환합니다.");
swap(a, i, max);
print(a);
}
}
static void swap(int[] a, int i, int max) {
int temp =0;
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
}
결과 :
반응형
'개발 > algorithm' 카테고리의 다른 글
[java][algorithm]소수 구하기 (0) | 2018.10.07 |
---|---|
[java][algorithm] 기수 변환 (10진수 정수 n진수 정수로 변환) (0) | 2018.10.07 |
[java][algorithm] 배열의 최댓값 구하기 (0) | 2018.10.07 |
[java] 반복 - 피라미드 만들기 (★) (0) | 2018.10.07 |
[java] 반복 - 구조적 프로그래밍 / 다중 루프 / 구구단 / 정사각형 만들기 (0) | 2018.10.07 |