알고리즘 - 두 개의 순서 가 있 는 배열 을 합 쳐 하나의 질서 있 는 배열 을 구성 합 니 다.

최근 에 알고리즘 문 제 를 보고 매우 의미 가 있다 고 생각 하여 스스로 자 료 를 찾 아 자신 이 코드 를 실현 하 는 것 을 모색 하여 특별히 기록 하 였 다.
제목: 두 개의 배열 a [] 와 b [] 가 있 습 니 다. 이 를 배열 c [] 로 합 치 려 면 c [] 도 질서 있 는 배열 이 필요 합 니 다.
두 가지 실현 사고 가 있다.
1. 새 배열 을 정의 합 니 다. 길 이 는 두 배열 의 길이 의 합 이 고 두 배열 을 모두 새 배열 로 복사 한 다음 정렬 합 니 다.
2. 두 배열 에 각각 아래 표 시 를 정의 합 니 다. 최대 길 이 는 배열 의 길 이 를 1 로 줄 이 고 비트 순환 에 따라 두 배열 을 비교 합 니 다. 작은 요 소 는 새 배열 에 넣 고 아래 표 시 는 1 을 추가 합 니 다 (주의, 비교적 큰 요소 가 대응 하 는 아래 표 시 는 1 을 추가 하지 않 습 니 다). 특정한 아래 표 시 는 배열 의 길 이 를 초과 할 때 순환 을 종료 합 니 다. 이때 비교적 짧 은 배열 은 모두 새 배열 에 넣 었 고 비교적 긴 배열 은 아직 부분 이 남 았 습 니 다.마지막 으로 남 은 부분 요 소 를 새 배열 에 넣 어 큰 성 과 를 거 두 었 다.
첫 번 째 방식 은 대부분 사람들 이 생각 하 는 것 이 고 실현 하기 쉬 우 며 다음은 두 번 째 방식 을 실현 하 는 것 이다.
코드 는 다음 과 같 습 니 다:
        public static int[] MergeList(int a[],int b[])
        {
            int result[];  
//
                result = new int[a.length+b.length];
              //i:a        j:b      k:     
                int i=0,j=0,k=0;
//                          ,          ,    (  ,            ),                  
                while(ib.length)
                    if(a[i] <= b[j]) {
                        result[k++] = a[i++];
                        print(result);
                        System.out.println();
                    }else{
                        result[k++] = b[j++];
                    }
                /*     while                                 *
                 *                ,          ,               ,    */
                while(i < a.length) 
                    result[k++] = a[i++];
                while(j < b.length)
                    result[k++] = b[j++];
                return result;
           }

 
다음으로 전송:https://www.cnblogs.com/clarke157/p/6910425.html

좋은 웹페이지 즐겨찾기