본문 바로가기

개발/algorithm

[java][algorithm] 배열 역순으로 정렬하기, 배열 뒤집기

반응형

 

 

 

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;
    }
}

결과 :

 

 

 

 


 

반응형