마인드 맵 갤러리 데이터 구조 기본 알고리즘
데이터 구조는 컴퓨터가 데이터를 저장하고 구성하는 방식입니다. 데이터 구조는 서로 하나 이상의 특정 관계를 갖는 데이터 요소의 모음을 나타냅니다. 신중하게 선택한 데이터 구조는 종종 운영 또는 저장 효율성을 높일 수 있습니다. 데이터 구조는 효율적인 검색 알고리즘 및 인덱싱 기술과 관련이 있는 경우가 많습니다. 이 마인드맵은 컴퓨터 대학원 입학 시험의 데이터 구조를 편집한 것입니다. 이는 데이터 구조의 기본 알고리즘인 검색과 정렬의 두 부분입니다. 이것이 내 친구들에게 도움이 되기를 바랍니다!
2019-09-18 12:58:50에 편집됨이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
데이터 구조 기본 알고리즘
찾다
기본 검색 방법
순차 검색 방식: 선형 테이블을 테이블의 한쪽 끝부터 순차적으로 스캔하고 스캔된 키워드와 주어진 값을 순서대로 비교합니다.
절반 검색 방법: 검색을 위해서는 선형 테이블이 순차적 저장 구조를 채택해야 하며 테이블의 요소는 키워드에 따라 순서대로 배열되어야 합니다. 테이블의 중간 위치에 기록된 키워드를 검색 키워드와 비교하여 두 개가 동일하면 검색에 성공한 것입니다. 그렇지 않으면 테이블을 첫 번째 하위 테이블과 마지막 하위 테이블로 나눕니다. 중간 위치에 기록된 값이 검색 키워드보다 크면 이전 하위 테이블을 추가 검색하고, 그렇지 않으면 다음 하위 테이블을 추가 검색합니다.
블록 검색 방법: 선형 테이블을 여러 블록으로 나누고 이전 블록의 가장 큰 키워드가 다음 블록보다 작아야 함을 요구합니다. 인덱스 테이블을 생성하고, 각 블록의 최대 키 값을 인덱스 테이블의 키 값으로 사용하여 블록 순서대로 보조 배열에 저장합니다. 검색 시 먼저 인덱스 테이블에서 검색하여 노드가 어디에 있는지 확인합니다. 당신이 찾고 있는 것은 블록의 위치입니다. 인덱스 테이블은 정렬되어 있으므로 순차 검색이나 이진 검색을 이용하여 인덱스 테이블을 검색할 수 있으며, 이후 두 가지 방법을 조합한 순차 검색을 통해 해당 블록에서 해당 노드를 찾을 수 있다.
조회에 적합한 데이터 구조
이진 트리
이진 정렬 트리
기본 속성: 왼쪽 하위 트리가 비어 있지 않으면 왼쪽 하위 트리에 있는 모든 노드의 값이 루트 노드의 값보다 작습니다. 오른쪽 하위 트리가 비어 있지 않으면 모든 노드의 값이 해당 루트 노드의 값보다 작습니다. 오른쪽 하위 트리는 루트 노드 값보다 큽니다. 키 값이 같은 노드가 없습니다.
기본 조작
검색: 루트 노드에서 아래쪽으로 검색
삽입: 이진 정렬 트리에 존재하지 않는 키워드의 경우 검색에 실패한 위치가 삽입 위치입니다.
삭제: 리프 노드인 경우 직접 삭제할 수 있습니다. 노드에 왼쪽 및 오른쪽 하위 트리 중 하나만 있으면 수정된 지점을 삭제하고 해당 노드에 왼쪽 및 오른쪽 하위 트리가 모두 있는 경우 해당 하위 트리를 직접 연결합니다. 그런 다음 왼쪽 하위 트리 또는 오른쪽 하위 트리에서 위치를 대체할 수 있는 노드를 검색합니다.
균형 이진 트리
기본 속성: 빈 트리이거나 왼쪽 및 오른쪽 하위 트리 사이의 높이 차이의 절대값이 1을 초과하지 않으며 왼쪽 및 오른쪽 하위 트리 모두 균형 이진 트리입니다.
구성 방법: 배열의 요소를 하나씩 트리에 넣습니다. 음의 BF 값을 갖는 노드가 있고, 왼쪽 하위 트리가 오른쪽 하위 트리보다 낮으면 노드를 중심으로 반시계 방향으로 회전하여 루트 노드를 변경합니다. 미세 조정 후 오른쪽 하위 트리가 왼쪽 하위 트리보다 낮을 경우 노드를 중심으로 시계 방향으로 회전하여 현재 레벨의 루트 노드를 변경한 후 미세 조정합니다.
다중 트리
B-트리(B-트리)
기본 속성: m-진 트리인 경우 루트 노드에는 최소한 두 개의 가지가 있고 루트가 아닌 노드와 리프가 아닌 노드에는 각각 최소한 [m/2]([]는 반올림 함수) 가지가 있습니다. 노드는 여러 가지 키워드를 가질 수 있으며, m-1개의 키워드를 수용할 수 있는 동일한 레벨의 노드 키워드는 왼쪽/오른쪽 끝에서 크기 순서로 왼쪽에서 오른쪽으로 배열됩니다. 노드 또는 두 키워드 사이 분기를 리드합니다. 분기로 연결된 노드의 키워드 크기는 이전 레벨의 연결된 키워드 사이에 있어야 합니다(왼쪽 끝점에서 리드되는 경우 왼쪽 끝 키워드보다 작아야 함). , 오른쪽 끝점에서 유도되는 경우 오른쪽 끝 키워드보다 커야 합니다.)
기본 조작
검색: 루트 노드에서 아래쪽으로 검색
삽입: B-트리에 존재하지 않는 키워드의 경우 검색이 실패한 위치가 삽입 위치입니다. 삽입 후 노드 키워드 개수가 m-1보다 큰 경우 노드를 분할해야 합니다. 보간된 노드 중 중심에 있는 값을 갖는 키워드는 상위 노드 키워드인 경우 상위 노드에 병합됩니다. 숫자도 기준을 초과하면 작업을 반복하십시오.
삭제
삭제된 노드는 터미널 노드에 위치
노드 키워드 수가 [m/2]-1보다 큼: 직접 삭제
노드 키워드의 수는 [m/2]-1과 같습니다.
키워드의 왼쪽, 오른쪽 노드의 키워드 개수가 [m/2]-1보다 큰 경우, 키워드 개수가 [m/2]-1보다 많은 노드에서 단어를 빌려 원래 위치를 채웁니다.
키워드의 왼쪽 및 오른쪽 노드에 있는 키워드의 개수가 [m/2]-1과 같을 경우, 키워드 삭제 후 키워드의 왼쪽 및 오른쪽 노드가 하나의 노드로 병합됩니다.
삭제된 노드는 터미널 노드에 없습니다.
① 키워드의 왼쪽 포인터를 따라 해당 하위 트리 루트 노드로 이동합니다. ② 루트 노드에서 가장 오른쪽 키워드의 오른쪽 포인터를 따라 아래로 이동하여 터미널 노드에 도달할 때까지 동일한 방법을 사용합니다. ③ 터미널 노드를 사용하여 노드를 교체하려면 클릭합니다. 삭제하고, 터미널 노드를 삭제하는 방법을 사용하여 터미널 노드를 위쪽으로 교체한 후 후속 처리를 수행합니다.
B-트리
기본 속성: n개의 키워드(터미널 노드 포함)를 포함하는 노드에는 n개의 분기가 있습니다. 여기서 [m/2]<=n<=m
B-트리와의 차이점: B-트리에서는 리프가 아닌 모든 노드는 인덱스 역할만 하며 키워드에 해당하는 레코드의 저장 주소를 포함하지 않으며 각 노드의 포인터가 가리키는 레코드에만 있습니다. 리프 노드. 모든 키워드의 저장 주소. B-트리의 각 키워드는 레코드의 저장 주소에 해당합니다.
해시 테이블
기본 속성: 주어진 키워드를 기반으로 테이블 내 키워드의 주소를 계산합니다.
공법
직접 주소 지정 방법: 키워드 또는 키워드의 선형 함수를 해시 주소로 사용
수치 분석 방법: 키워드의 여러 자리를 취하여 해시 주소를 구성합니다.
제곱법: 키워드를 제곱한 후 가운데 숫자를 해시 주소로 사용
나누고 나머지를 남기는 방법: 해시 테이블의 길이보다 크지 않은 숫자(보통 테이블 길이보다 크지 않은 가장 큰 소수)로 나눈 키워드를 그 숫자로 나누어 키워드를 얻는다. 나머지는 해시 주소로 사용
갈등 처리 방법
공개주소법
선형 프로브 방법: 중복된 주소가 나타나면 이 주소를 시작점으로 사용하여 사용되지 않은 주소 수가 나타날 때까지 역방향으로 프로브합니다.
제곱 검출 방법: 충돌하는 주소 d(d² 1)를 처리하고 계산된 값을 주소로 사용
체인 주소 방식: 단일 연결 리스트를 이용하여 모든 동의어를 연결하는 방식
종류
내부 정렬(Internal Sorting): 정렬할 열을 메모리에 완전히 저장하는 정렬 프로세스로, 크기가 너무 크지 않은 요소 시퀀스에 적합합니다.
시간복잡도가 O(n²)인 방법
버블 정렬: ① 인접한 요소를 비교합니다. 첫 번째 요소가 두 번째 요소보다 크면 두 요소를 모두 교체합니다. ② 첫 번째 쌍에서 시작하여 마지막 쌍으로 끝나는 인접한 요소의 각 쌍에 대해 동일한 작업을 수행합니다. 이때 마지막 요소는 가장 큰 숫자가 되어야 합니다. ③ 마지막 요소를 제외한 모든 요소에 대해 위 단계를 반복합니다. ④ 비교할 숫자 쌍이 없을 때까지 점점 더 적은 요소에 대해 위 단계를 계속 반복합니다.
단순 선택 정렬: 정렬된 순서의 레코드 수가 n개라고 가정합니다. i는 1, 2,...,n-1을 취하고, 모든 n-i개의 1개 레코드(Ri, Ri 1,..., Rn) 중에서 정렬 코드가 가장 작은 레코드를 찾아 i번째 레코드와 교환합니다. n-1번 실행하면 레코드 순서 정렬이 완료됩니다.
직접 삽입 정렬: 먼저 첫 번째 데이터의 순위가 매겨진 다음 각 패스에서 정렬할 데이터 조각이 키 크기에 따라 정렬된 레코드 그룹의 적절한 위치에 삽입됩니다. 정렬할 모든 데이터가 삽입되었습니다.
시간복잡도가 O(n^3/2)인 방법
Hill 정렬: 먼저 n보다 작은 정수 d1을 첫 번째 증분으로 취하고 파일의 모든 레코드를 그룹화합니다. 거리가 d1의 배수인 모든 레코드는 동일한 그룹에 배치됩니다. 먼저 각 그룹 내에서 직접 삽입 정렬을 수행한 다음 두 번째 증분 d2<d1을 취하고 dt=1 증분(dt<...<d2<d1)이 될 때까지 위의 그룹화 및 정렬을 반복합니다.
시간 복잡도가 O(nlog2n)인 방법
힙 정렬: 이진 트리로 정렬할 시퀀스를 구성한 후 모든 하위 노드가 상위 노드보다 작도록 전치 조정을 수행합니다. 이때 루트 노드 값은 최대값이 되어야 합니다. 다시 이진 트리를 구축하고 위의 작업을 반복하세요.
양방향 병합 정렬: ① 여러 개의 바이너리 그룹을 형성하고 그룹 내에서 순서대로 조정합니다. ② 정렬된 바이너리 그룹을 하나의 그룹으로 병합하고 그룹 내에서 순서대로 조정합니다. ③ 모든 데이터를 하나의 그룹으로 병합하여 정렬을 완료합니다.
시간 복잡도가 O(nlog(r)m)인 방법 (r은 취해진 베이스, m은 힙 번호)
기수 정렬: 0 공백, 1 공백,..., 9 공백이라는 이름의 공백을 10개 설정합니다. 먼저 순서의 레코드를 각 주요 공백에 한 자리 값에 따라 하나씩 대응시켜 각 공백에 배치합니다. 각 공간에서 정렬을 완료한 후 0번 공간에서 각 레코드를 꺼내어 새로운 시퀀스를 형성한 다음 가장 높은 비트 정렬이 완료될 때까지 상위 비트에서 작업을 반복합니다.
외부 정렬: 정렬할 파일을 한 번에 메모리에 로드할 수 없으며 전체 파일을 정렬하려면 메모리와 외부 저장소 간의 여러 데이터 교환이 필요합니다.
주류 알고리즘
병합 정렬: 초기 시퀀스를 m개의 더 작은 레코드 세그먼트로 나누고, 이러한 레코드 세그먼트를 정렬하고, 정렬이 완료될 때까지 각 레코드 세그먼트의 가장 작은 끝부터 최소값을 지속적으로 비교합니다.
중요한 하위 알고리즘
패자 트리(Loser tree): 병합 정렬이 최소값을 감지할 때 패자 트리를 사용하지 않는 경우 k-1번 읽은 k 값을 비교하면 되며, 이를 사용한 후에는 시간 복잡도만 수행하면 됩니다. 최적의 값을 선택하는 방법은 O(log2k)이고, 트리 구축 시간 복잡도는 O(klog2k)이며, 패자 트리 높이는 [log2k] 1입니다.
설립하다
① 읽어온 k개의 레코드에 대해 임의의 두 노드를 그룹으로 하여 이진 트리를 구성합니다. 각 그룹에서 가장 작은 값이 패자에 해당하는 시퀀스 번호가 두 노드의 상위 노드로 사용됩니다. 승자에 해당하는 번호는 상위 노드의 상위 노드로 사용되며, 레코드가 1개 남으면 다음 프로세스가 처리됩니다. ② 초과 레코드를 처리하고 해당 시퀀스 번호를 특정 이진 트리와 비교합니다. 그리고 Winner-On-Top 원칙에 따라 하나의 트리로 병합하고 이 노드의 초과 레코드 값을 자식 노드로 연결합니다. ③ 이진 트리를 비교하여 Winner-on-Top에 따라 하나의 트리로 병합합니다. 원칙 (패자 트리의 루트 노드에는 포크가 하나만 있고 나머지는 원칙적으로 이진 트리를 따릅니다)
조정
패자 트리에서 최소값을 빼낸 후 새로 읽은 레코드를 추가하여 패자 트리를 형성해야 하며, 이때 패자 트리의 기준에 맞게 패자 트리를 조정해야 합니다. 조정 방법: 새로 읽은 기록으로 공석을 채운 후 아래에서 위로 단계별로 비교합니다. 조정이 완료될 때까지 승자의 일련번호는 패자 일련번호의 상위 노드입니다.
교체 선택 정렬: 버퍼 크기에 따라 외부 메모리에서 레코드를 읽어 버퍼가 가득 차면 가장 작은 레코드를 선택하여 외부 메모리에 다시 씁니다. 레코드를 읽고 출력 레코드는 병합된 세그먼트의 일부가 됩니다. 새로 입력된 레코드가 병합 세그먼트로 꺼낸 레코드보다 작은 경우 다른 초기 병합 세그먼트를 대체하여 생성됩니다. 위의 작업을 반복하세요.
최적의 병합 트리: 교체 선택 정렬을 통해 서로 다른 길이의 병합 세그먼트를 얻습니다. 각 세그먼트는 길이에 따라 허프만 트리에 배치됩니다(방법은 트리 장 참조). 노드가 통과한 Edge 수의 합의 2배가 최적 병합 트리에 해당하는 I/O 수(최소 I/O 수)입니다.