# 2차원 배열의 첫번째 인자를 그룹으로 정렬하고, 두번째 인자를 그룹인자에 맞춰서 정렬
- 정렬 알고리즘 : 선택정렬, 삽입정렬, 버블정렬, 퀵정렬(Arrays.sort())

사용자 삽입 이미지

























# TwoDimArraySort.java


import java.util.Arrays;

public class TwoDimArraySort{

    /* 2차원 배열 초기화 */
    private static final int[][] ARRAY_NUMBER   = new int[][]{  
            {100, 10}, {101,6}, {102,9}, {103,3}, {110,1}
          , {105,6}, {110,5}, {101,8}, {107,3}, {103,2}
          , {100,3}, {105,5}, {102,5}, {110,7}, {107,1}
          , {100,7}, {105,9}, {102,2}, {110,3}, {107,8}
          };

    /**
    * 숫자 정렬
    */
    public static void sortInteger(String sortType){

        int[] dupArray = new int[ARRAY_NUMBER.length]; // 중복 값 제거후 저장할 배열
        int index = 0;                                   // 중복 값 배렬 순서 지정

        /**
         * 중복값 추출및 1차 배열 순서 정렬
         */
        for(int i=0; i<ARRAY_NUMBER.length ; i++){
            if (i == 0){
                dupArray[index] = ARRAY_NUMBER[i][0];
                i++;
            }else{
                boolean isDuplication = false;
                for(int j=i+1; j<ARRAY_NUMBER.length; j++){
                    if(ARRAY_NUMBER[i][0] == ARRAY_NUMBER[j][0]){
                        isDuplication = true;
                        break;
                    }
                    if(ARRAY_NUMBER[i][0] > ARRAY_NUMBER[j][0]){
                        int temp = ARRAY_NUMBER[j][0];
                        ARRAY_NUMBER[j][0] = ARRAY_NUMBER[i][0];
                        ARRAY_NUMBER[i][0] = temp;

                        int tempOption = ARRAY_NUMBER[i][1];
                        ARRAY_NUMBER[i][1] = ARRAY_NUMBER[j][1];
                        ARRAY_NUMBER[j][1] = tempOption;
                    }
                }

                if(!isDuplication){ // 중복이 아니면 dupArray 배열에 순서대로 저장
                    dupArray[index] = ARRAY_NUMBER[i][0];
                    index++;
                }
            }
        } // 중복값 추출및 1차 배열 순서 정렬 for문 종료

        /**
         *  정렬된 그룹번호 갯수 만큼 for문 실행
         */
        for(int j=0; j<dupArray.length; j++){
            if(dupArray[j] == 0) break;         // 값이 0(중복에서 제거)일경우 중지

            System.out.print("#"+dupArray[j]+"("); // 그룹 번호 출력

            /* 각 그룹별 건수 확인 및 저장 */
            int cnt = 0;
            for(int s=0; s<ARRAY_NUMBER.length; s++){
                if(dupArray[j] == ARRAY_NUMBER[s][0]){
                    cnt++;
                }
            }

            /* 그룹 건수만큼 for문 수행 */
            for(int i=0; i<cnt; i++){
                int[] tmpOption = new int[cnt];
                int c = 0;

                /* 그룹별 값을 tmpOption 배열에 값 저장 */
                for(int s=0; s<ARRAY_NUMBER.length; s++){
                    if(dupArray[j] == ARRAY_NUMBER[s][0]){
                        tmpOption[c] = ARRAY_NUMBER[s][1];
                        c++;
                        if(cnt == c) break; // 그룹별 건수와 같으면 for문 중지
                    }
                }

                /**
                 * # 정렬 알고리즘에 따른 그룹별 값을 정렬 처리
                 */
                if(sortType.equals("selectionSort")){    /* 선택 정렬 */
                    int minIndex;
                    int temp;

                    for (int a = 0; a<tmpOption.length-1; a++) {
                        minIndex = a;
                        for (int b=a+1; b<tmpOption.length; b++) {
                            if (tmpOption[b]<tmpOption[minIndex]) {
                                minIndex = b;
                            }
                        }
                        temp = tmpOption[minIndex];
                        tmpOption[minIndex] = tmpOption[a];
                        tmpOption[a] = temp;                // 
                    } // 선택 정렬 for문 종료
                }else if(sortType.equals("insertionSort")){ /* 삽입 정렬 */
                    int minIndex;
                    int a;
                    int b;

                    for(a=0; a<tmpOption.length; a++){
                        minIndex = tmpOption[a];
                        for(b=a; b>0; b--){
                            if(tmpOption[b-1] > minIndex){
                                tmpOption[b] = tmpOption[b-1];
                            }else{
                                break;
                            }
                        }
                        tmpOption[b] = minIndex;
                    } // 삽입 정렬 for문 종료
                }else if(sortType.equals("bubbleSort")){   /* 버블 정렬 */
                    int temp;
                    
                    for(int a=0; a<cnt; a++){
                        for(int b=a+1; b<cnt; b++){
                            if(tmpOption[a] > tmpOption[b]){
                                temp = tmpOption[b];
                                tmpOption[b] = tmpOption[a];
                                tmpOption[a] = temp;
                            }
                        }
                    } // 버블 정렬 for문 종료
                }else{
                    /** 
                     * 2) Arrays.sort() 메서드를 이용한 정렬 
                     * # The sorting algorithm is a Dual-Pivot Quicksort
                     */ 
                    Arrays.sort(tmpOption);
// Arrays 정보 출력 : 100 >[3, 7, 10]
// System.out.println(Arrays.toString(tmpOption)); 
                }

                /* 그룹별 정렬된 결과 값 출력 */
                for(int t=0; t<cnt; t++){
                    System.out.print(tmpOption[t]);
                    if(t+1<cnt) System.out.print(",");
                }
                System.out.print(")");
                if(i == 0) break; // 메인 for문 반복 중지
            } // 그룹별 건수만큼 for문 수행 종료
            System.out.println();
        } // 정렬된 그룹번호 갯수 for문 종료        
    }

    public static void main(String[] arr){
        sortInteger("selectionSort");  // 선택 정렬
//        sortInteger("insertionSort");  // 삽입 정렬
//        sortInteger("bubbleSort");     // 버블 정렬
//        sortInteger("");               // Arrays.sort() 퀵 정렬
    }
}

/* # 출력 결과 */
/**
#100(3,7,10)
#101(6,8)
#102(2,5,9)
#103(2,3)
#105(5,6,9)
#107(1,3,8)
#110(1,3,5,7)
*/






※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
04 19, 2013 17:51 04 19, 2013 17:51


Trackback URL : http://develop.sunshiny.co.kr/trackback/879

Leave a comment
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

« Previous : 1 : ... 139 : 140 : 141 : 142 : 143 : 144 : 145 : 146 : 147 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. phoenix seo phoenix seo %M
  2. animal mobility services animal mobility services %M
  3. face masks face masks %M
  4. healer healer 5 07
  5. small dog wheelchair small dog wheelchair 5 07

Calendar

«   07 2020   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 3000411 HIT
TODAY 863 HIT
YESTERDAY 401 HIT