정렬 알고리즘
정렬 직접 삽입 : 앞줄으로 차례로 배열의 모든 요소가 선택된 요소가 정렬 요소보다 작은 경우, 모든 요소까지 교환 비교되고, 요소에 비해 좋았다
힐 정렬 : 정렬 배열 단계 갭에 의해 그룹화 될 다음 정렬 정렬 직접 삽입 방법을 이용하여 각 그룹의 엘리먼트는 각각의 시간 간격을 반으로는, 상술 한 동작 사이클 감소된다 때 1 갭 = 직계 삽입, 전체 염기 서열
간단하게 정렬 선택 : + 교환을 비교
힙 정렬 : 건물의 큰 탑 힙 종류
필기 방법 스택 1 다수 힙 [크기 ++] 삽입 = X, 최대 (크기) 2 . 치우 힙 [중에서 최소 값을 설정하는 1 ] (3) . 최소 힙 삭제 [ 1 ] = 힙 [크기]; 크기 - (아래쪽 . 1 ) . (4) . 크기, 힙 [K] = 힙 [크기]의 요소 삭제 - 다운 (Down) (K)에서 (K)을, 5. 힙 [K] = 임의의 요소를 수정. X, 아래 (K)까지 (K), 힙 정렬 INT N-, m; INT H [ 1000 ], CNT; 공극 하 ( INT U) { INT T = U; IF (U * 2 <= CNT && H [ U *2 ] <H [t]) t = U * 2 ; 경우 (유 * 2 + 1 <= CNT && H [유 * 2 + 1 ] <H [t]) t = U * 2 + 1 ; 만약 (U =! t) { 스왑 (H [U], H [t]); 다운 (t); } } 무효화 업 ( INT U) { 동안 (U / 2 && H [U] <H [U / 2 ]) { 스왑 (H [U], H [U / 2 ]); 유>> = 1 ; } } INT 의 main () { CIN >> >> N m 단계; 위한 ( INT 난 = 1 ; I <= N; I ++) CIN >> H [I]; CNT = N; 대 ( INT I = N / 2 , I, I - ) 아래 (I); 반면 (m - ) { CIN >> H [ 1 ] << " " ; H [ 1 ] = H [(CNT) - ]; 아래 ( 1 ); } 반환 0 ; }
버블 정렬 :
1. 차례로 비교 요소들 주변의 순서는, 요소의 오른쪽이 왼쪽의 요소를 항상보다 큰 보장
2. 단계 1 남은 N-1 사이에서 다시 시퀀스 요소를 행한다
길이 N의 시퀀스 3. N-1 필요한 총 비교 휠을 수행
빠른 정렬 : 파고 채우기 + 나누기와 정복의 수
벡터 < INT > 예 : quick_sort (벡터 < INT > Q, INT (L) 의 INT R) { 경우 (L> = R)의 리턴 ; int로 난 L = - 1 ; INT J = R + 1 ; INT (X) = Q [L +의 연구 >> 1 ]; 동안 (ⅰ < J) { 수행 ++ 나 나; 반면 (Q [I] < X); 이렇게 J를 -; 반면 (Q [J]> X); 경우 (I < J) 교환 (Q [I], Q [J]); } 예 : quick_sort (Q, L, J); 예 : quick_sort (Q, J + 1 , R); }
일종의 병합 :
각 이진 분해 ---- 분할 1. 시퀀스
---- 정렬 병합 후 2 조합 시퀀스 세그먼트 분할 이십
벡터 < INT > TMP; 보이드 merge_sort (벡터 < INT > Q, INT (L) 의 INT R) { 경우 (L> = R)의 리턴 ; 오토 중간 = L + R >> 1 ; merge_sort (Q, L, MID); merge_sort (Q 중간 + 1 , R); int로 난 = L; INT의 J = 중간 + 1 ; INT (K) = 0 ; 동안 (ⅰ <= J) { 경우 (Q [I] <= Q [J]) TMP [K ++] = Q [I ++]; 다른 TMP [K ++] = Q [J ++ ]; } 동안 (ⅰ <= MID) TMP [K ++] = Q [I ++ ]; 반면 (j <= R) TMP [K ++] = Q [J ++ ]; 위한 ( INT 난 = L, J = 0 ; I <= R; I ++, J ++) Q [I] = TMP [J] }
KMP 알고리즘
일치가 실패한 후 KMP 알고리즘은 빠른 일치의 목적을 달성하기 위해 주요 문자열 패턴 문자열 일치의 수를 최소화하기 위해, 키 정보를 사용하여. 특정 구현 함수 자체가 부분적인 정보 패턴 스트링 매칭을 포함하는 다음 () 함수를 구현하는 것이다. O의 시간 복잡도 (m + n)의
실패는 포기했다 전에하는 동안 시간 복잡도가 매우 높은, 그래서 간단한 알고리즘에서, 때마다 우리는 모든 경기 일정을 일치 K M P의 KMP 알고리즘 거짓말의 본질은 각 고장 모드의 경기 후 문자열의 시작 부분에서 진행되지 일치하지만, 종래의 데이터에 따른 검색이 특정 패턴 문자열과 일치하는 위치로 점프 위로 계속하고, 각 비트에 대해함으로써 시간을 절약 고유를 갖는 패턴 문자열 "특정의 위치 위로 스냅".
포인터 불일치 : 위치 I의 값은 패턴 문자열 S가 불일치 어레이 (I 1에 첨자)는 공통 프리픽스 진정한 적절한 접미어의 최대 길이
// 시크 부정합 배열 // 되는 문자열 자체를 패턴 매칭 처리 자체 막 배열은 동일한 텍스트 문자열을 매칭 아이디어 패턴 문자열의 의미 내 과실 내장 말할 int로 N- 형 = s1.length (); INT m = s2.legnth () 대 ( INT I = 1. ; I <m; I ++ ) { 그동안 K = (&& S2 K [I] = S2 [K]!) KMP [K] IF (S2 [I] = S2 [K]) KMP [I + 1이다. ] ++ = K; } // 텍스트 문자열 패턴 문자열 찾는 // k는 현재 모드가 최종의 문자열과 일치하는 마무리되어있는 것을 알 수있다 위치는 또한 검색된 문자열 여러 개략적으로 이해 될 수 K = 0 ; 대 ( INT I = 0; I <N-; ++ I) { while 회 (S1 && K [I] = S2 [K]) = K! KMP은 [K]는; // 일치 불일치 포인터 점프 패턴 문자열을 따라 집합 후면 실패 첫 번째 점프하지 않을 것입니다. IF (S1 [I]는 == S2 [K]) K ++; // 성공적인 일치하는 위치에 일치 패턴 문자열 +1 IF (K == m) COUT << I - m + 2 << ENDL; / / 패턴 문자열 출력 위치를 찾을 수 있습니다. }
임계 경로 다이어그램
임계 경로의 어떠한 분석도 더 중요한 사용할 수 없습니다. 각 노드는 물론이 작업을 완료하는 데 걸리는으로 수행해야하는 조치를 제공 할 수있는 시간을 나타냅니다. 따라서,도 2의 노드의 동작 그래프.
에지 (V, W) 액션 w 작용의 시작 전에 완료해야 V 수단 : 도면 측은 우선 순위 관계를 나타낸다.
조건은 마지막 모든 사전 이벤트 사전 이벤트가 서로 병렬로 지정할 수 있지만 가장 빠른 완료 시간이 가장 긴 경로를 완료하는 것입니다 시작