제 II 알고리즘 작업 테스트 보고서

실험보고 요구 사항 분석을 위해 하나 개의 주제를 선택합니다. 내용은 다음과 같습니다

  1. 연습 주제
  2. 문제 설명
  3. 알고리즘 설명
  4. 시간과 공간의 복잡성 알고리즘 분석 (분석 과정이)
  5. 감정과 경험 (수확 및 의심의 연습이 요약)

세 가지 질문의 총의 연습, 나는 첫 번째 질문을 분석하기로 결정했습니다.

1. 연습 질문 질문 :

7-1 이진 검색 (20 점)
N에 대한 값 (1 <= N <= 1000), n은 정수의 비 내림차순 및 (X)의 개수는 X를 찾는 바이너리 서치 알고리즘을 이용하여, 출력 X를 찾는 여기서 첨자 (0 ~ N-1) 및 비교의 수 . x가 존재하지 않는 경우, 출력 1과 비교의 수.

입력 형식 :

입력 공통 산신 : 첫 번째 라인은 n의 값이며, n은 정수 두 번째 행이며, 세 번째 행은 X 값이다.

출력 형식 :

여기서 첨자 X 출력 (0 ~ N-1) 및 비교의 수. x가 존재하지 않는 경우, 출력 1과 비교의 수.

문제의 설명 :

그것은 이분법을 지정된 방법을 사용하여 찾으려는 데이터를 찾을 수 및 출력 인덱스의 수를 비교하는 비 내림차순으로 목록에 단순히

이진 기본 개념은 X는 = A [N / 2] X가 발견 알고리즘이 중단되는 경우 [N / 2] ×을 비교하기 위해, 두 개의 거의 동일한 부분으로 분할되어 N 개의 엘리먼트를 찾는 것이다. 만약 X <a [n / 2],만큼 상기 어레이의 좌측 절반 x, 대한 검색을 계속하는 경우 x> A [N / 2] x의 오른쪽 절반만큼 상기 어레이의 검색. 이러한 검색은 계속하고있다

3. 알고리즘 설명

  3.1 간격 카운터의 초기 값을 찾아, 왼쪽, 오른쪽, N-1, 0,

  좌우 때 3.2 이하, 연산의 다음 사이클을 실행

  •   중간 값은, 좌우의 중간 값이다;
  •   사이클 카운터 + 1의 수를 기록.
  •   기록 중간 키 (X)의 설정 위치는, 탐색이 성공적 동일하면 중립 위치로 복귀 중간, 비교;
  •   동일하지 않은 경우, 이전에 중간 위치에 의해 기록 시트는 두 개의 서브 - 테이블. 키 (X)의 기록의 중간 위치보다 작은 경우, 그렇지 않으면 바로 중간 + 1 촬영 좌측 중 1로한다.

  3.3주기는 지침 간격이 다음 조회 실패, 비어 0을 반환 찾으려면 끝납니다.

코드 설명 :

INT Binsearch ( INT 배열 [], INT의 N, INT의 X) {
     INT 왼쪽 = 0 ;
    int로 오른쪽 = N - 1 ;
    INT의 카운터 = 0 ;
    반면 (좌회전 <= 우측) {
         INT 중간 = (좌측 + 우측) / 2 ; 
        카운터 ++ ;
        경우 (X == 배열 [중간]) { 
            COUT << 중간 << ENDL; 
            COUT << 카운터;
            반환 중간; 
        }
         경우 (x> 배열 [중간]) { 
            좌측 = 중간 + 1 ; 
        } 
        다른 권리 = 중간 - 1 ; 
        
    } 
        COUT << " -1 " << ENDL; 
        COUT << 카운터; 
        반환 - 1 ; 
}

4. 시간 및 공간 분석 알고리즘의 복잡성

시간 복잡도 : N 원소의 합계가 일단 각 섹션은 N의 크기이며, N / 2, N / 4 ..., N / 2 ^ (K) (다음으로, 소자의 나머지 수의 동작), k는주기이고, 수. > = 1 찰나 N / 2 ^ K 때문에, 심지어 만약 N / 2 ^ (K) = 1을 얻을 수있다 K = log2n, 그 시간 복잡도 O를 나타낼 수있다 ((N 대수 용 기체 (2) 기준)) = O (logn)

공간 복잡도 : 모든 작업을 완료 할 수 배열 때문에되도록 O의 공간 복잡도 (1)

5. 감정과 경험 (수확 및 의심의 연습 요약)

수확은 내가 바이너리 서치 알고리즘에 더 익숙하다

일부 코드에 관심을 지불 할 필요가 작은 세부 사항이 있습니다 :

  • 함수, 함수의 값을 반환 할 수 없습니다
  • 같은주의해야한다 변수 레코드의 수와 같은 일부 변수의 이름을 찾아 최고의 카운터는 플래그 부울 클래스를 계산

추천

출처www.cnblogs.com/miaobeilei/p/11564750.html