내가 아는 힙은 메모리밖에 없는디
O(log n)
이다n * log n
의 시간이 소요된다O(n * log n)
이다O(n * log n)
인 것이다) for (int i=number-1;i>=0;i--){ //모든 원소에 대해
int c=i; //특정 원소에 대해
do { //힙 생성 시작 (하향식으로)
int child=c*2+1;
if (child<number-1&&heap[child]<heap[child+1])
child++;
if(child<number&&heap[child]>heap[c]){
int temp=heap[c];
heap[c]=heap[child];
heap[child]=temp;
}
c=child; //계속 아래로 내려갈 거니까
}while(c<number);
}
for(int i=0;i<number;i++)
왼쪽 자식 노드스 = 부모 노드 인덱스 * 2+1
오른쪽 자식 노드 인덱스= 부모 노드 인덱스 * 2+1
부모 노드 인덱스 = (자식 노드 인덱스 -1)/2
for (int i=number-1;i>=0;i--){//모든 원소에 대해
int temp=heap[i];
heap[i]=heap[0];
heap[0]=temp;// 최대값이랑 맨 뒤 값이랑 swap
int root=0;
int child=1; //while에 조건 걸어야 돼서 여따가 선언
do {
child=root*2+1;
if (child<i-1&&heap[child]<heap[child+1])
child++;
if(child<i&&heap[child]>heap[root]){
temp=heap[root];
heap[root]=heap[child];
heap[child]=temp;
}
root=child;
}while(child<i);
}
child
가 number
가 아닌 i
보다 작을 때로 조건을 설정한다 (i는 반복문이 진행될수록 작아지기 때문)하 ... 멍청이