설계 및 알고리즘의 분석 - 선형 시간 선택

 

 

개인  정적 필적 ( INT의 P, INT의 R, INT의 K) 
{ 
    경우 (p는 == R) 
    { 
        반환 이 [P]을; 
    } 
    int로 I = randomizedaparttition (P, R);
    INT의 J = 1-P + 1; // A [P : 전]中元素的个数
    경우 (K <= J) 
    { 
        반환 randomizeSelect (P, I, K)를; 
    } 
    다른 
    { 
        반환 randomizeSelect을 (I + 1, R, K- J); 
    } 
}

 

 

 

 

이 그룹의 두 개의 요소가 각 그룹의 평균 미만이기 때문에 식별 기준 적어도 X / 소자 (10), 3 (N-5)보다 크고, 평균은 2 * N / 5- . 1] = (N-5) / 10 , 즉 작은 다른 (N-5) / 10 × 기준의 하나의 N / 5 자리.
마찬가지로, 기준은 적어도 X / 3 미만 (N-5) (10 개) 요소이다. n≥75 경우, 3 (N-5) / / 4 10≥n 그래서 두 개의 서브 클릭 인한 기준 어레이의 길이는 적어도 1/4보다 짧은으로 분할되어있다.
이 사실은 쉽게 이해할 수있다 :
N 요소 CCP 다섯 개 요소의 집합의 배열에 대한 m = N / 5 그룹으로 나누어 총. 각 그룹의 중간 크기의 수를 호출 할 수 있습니다 "중간 시간을."
그런 다음, 전체 어레이 (X)의 "중간"인 중간 값 m = N / 5 번째 "서브 중간"을 제거
명백하게, "중간 시간"의 절반이 X보다 작은 경우 [(N-5) / 10 < m / 2 ]
이 그룹에서, 각각의 요소가 있어야 적어도 3 (S '중간 회 숫자 "의 카운트), X보다 작은
전체 배열은 적어도 있어야하므로 3- (N-5) / 10 요소 X. 미만인
경우 3 (N-5) / 10≥n n≥75 / 4, 즉보다 X. 요소 중 적어도 분기 작은 말하자면
이와 유사하게, 적어도 요소의 분기 큰 X. 이상
이는 전체가보다 균등하게 분할 최장 어레이의 분할 원래의 3/4를 초과하지 후 중간 선택이 합리적임을 보장한다.
당신이 10 학년 클래스, 각 클래스에 다섯 사람이 있다고 가정하자.
특정 시험은, 당신이 3 위 (중간 시간)에 클래스를 테스트합니다.
각 클래스에서 3 위는 10 개인 (중간)에서 다섯 번째로 함께 넣어.
즉, 일년 내내 당신보다 적어도 15 개인 점수가 낮은있다, 말하는 것이 아니다?

 

개인  정적 는 Comparable SELECT ( INT의 P, INT의 R & LT, INT K) 
{ 
    IF (RP는 <5. ) 
    { 
        거품 정렬 (P, R & LT); // 상기 배열을 정렬하는 간단한 알고리즘 [P를, R] 정렬 
        복귀 A [P를 . 1-K +은 ] 
    } 
    // I]는 [P로 + 5 * I + * A [P + 5 것 4] 와 제 작은 소자 A [P + I]를 교환 사이트
     // 중앙값을 찾을 중앙값, RP-4, 즉 상기 언급 된 5-N-. 
     ( INT I = 0; I는 <= (4-RP)를 / 5;.. 난 ++ ) 
    { 
        INT S. 5 * = P + I;
         INT T = S + . (4) ,
          ( INT J <3;. J ++ J = 0 )
        { 
            버블 (S, t - J); 
        } 
        MyMath.swap (a, P + I, S + 2 ); 
    } 
    필적의 X = 선택 (P, P의 + (RP-4) / (5) (RP + 6) / 10 );
    INT I = 파티션 (P, R, X);
    INT의 J = 1-P + 1 ;
    경우 (K <= J) 
    { 
        반환 (P, I, K)을 선택; 
    } 
    다른 
    { 
        반환 선택은 (i + 1, R, K- J)를; 
    } 
}

 

 

추천

출처www.cnblogs.com/wkfvawl/p/11517586.html