데이터 구조 (제5 장)
typedef struct HeapStruct *MaxHeap;
struct HeapStruct
{
ElementType *Elements[];//
int Size;//
int Capacity;//
}
MaxHeap Create(int MaxSize)
{
MaxHeap H=malloc(sizeof(struct Heapstruct));
H->Elements=malloc((MaxSize+1)*sizeof(sizeof(ElementType));
H->Size=0;
H->Capacity=MaxSize;
H->Elements[0]=Maxdata;// Maxdata mindata
return
가장 많은 삽입 알고리즘 은 새로 추 가 된 결점 을 아버지 결점 에서 뿌리 결점 까지 의 질서 있 는 서열 에 삽입 하면 우 리 는 가장 많은 질서 성 을 확보 하고 삽입 을 완성 할 수 있다 는 것 이다.
void Insert(MaxHeap H,ElementType item)
{
int i;
if(IsFull(H))
{
printf(" ");
return;
}
i=++H->Size;//i
for(;H->Elements[i/2]<item;i/=2)
{
H->Elements[i]=H->Elements[i/2];//
}
H->Elements[i]=item;//
}
가장 많은 삭제 작업 을 하 는 알고리즘 은 루트 노드, 즉 우리 의 가장 큰 요 소 를 제거 하 는 동시에 더 미 를 삭제 하 는 것 입 니 다.
ElementType DeleteMax(MaxHeap H)
{
int Parent,Child;
ElementType MaxItem,temp;
if(IsEmpty)//
{
printf(" ");
return;
}
MaxItem=H->Elements[1];// ,
temp=H->Elements[H->Size--];
for(Parent=1;Parent*2<=H->Size;Parent=Child)//
{
Child=Parent*2;
if((Child!=H->Size)&&(H->Elements[Child]<H->Elements[Child+2]))
{
Child++;//
}
if(temp>=H->Elements[Child])
break;
else
H->Elements[Parent]=H->Elements[Child];
}
H->Elements[Parent]=temp;
return MaxItem;
}
두 번 째 는 헤 프 만 나무의 정의 와 원리 라 고 합 니 다. 헤 프 만 아 저 씨 는 나무의 한 노드 에서 다른 노드 사이 의 가 지 는 두 노드 사이 의 경 로 를 구성 하고 경로 의 가 지 는 경로 길이 라 고 합 니 다. 그러나 나무의 경로 길 이 는 뿌리 노드 에서 나무의 모든 노드 까지 의 경로 길이 와 같 습 니 다. 권한 을 가 진 경로 가 가장 작은 이 진 나 무 는 헤 프 만 나무 라 고 합 니 다.가장 좋 은 이 진 트 리 라 고도 부른다.헤 프 만 알고리즘 (헤 프 만 나 무 를 찾 는 데 사용) 설명: 주어진 n 개의 가중치 {w1, w2...} 에 따라 구 성 된 n 개의 이 진 트 리 의 집합 F = {T1, T2...}, 그 중에서 이 진 트 리 Ti 는 하나의 권한 만 있 고 좌우 자 트 리 는 모두 비어 있 습 니 다.F 에서 두 개의 노드 의 가중치 가 가장 작은 나 무 를 좌우 서브 트 리 로 선택 한 다음 에 새로운 이 진 트 리 를 만 들 고 새로운 이 진 트 리 의 뿌리 결산 점 의 가중치 는 좌우 나무 위의 뿌리 결산 점 의 가중치 의 합 이다.F 에서 이 두 그루 의 나 무 를 삭제 하고 새로 얻 은 이 진 트 리 를 F 에 넣 어 F 가 한 그루 의 나무 만 포 함 될 때 까지 이 절 차 를 반복 한다.그리고 이 나 무 는 헤 프 만 나무 다.그렇게 많은 말 을 했 지만 사실은 저도 잘 모 르 겠 습 니 다. 소감: 이 장 을 통 해 배 웠 습 니 다. 나무 와 숲 은 복잡 해 보이 지만 우 리 는 이 진 트 리 와 같은 규칙 적 인 나 무 를 통 해 이 를 규범화 시 킬 수 있 습 니 다. 규칙 이 있 으 면 우 리 는 규칙 에 따라 가면 버드나무 가 어 둡 고 꽃 이 밝 습 니 다. 그 다음 에 예전 에 여러 조 를 사용 하 는 것 을 좋아 했 던 것 은 간단 하고 조작 하기 쉬 웠 기 때 문 입 니 다. 그러나 지금 은 알 게 되 었 습 니 다.그것 은 공간 을 너무 낭비 하고 나무의 구 조 는 많은 공간 을 절약 하여 효율 을 높 였 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.