做网站必须认证吗,网络宣传策划方案模板,求个网站没封的,重庆响应式网站建设找哪家试设计一个算法#xff0c;判断一个数据序列是否构成一个小根堆#xff08;下面代码中的堆排序的部分仅仅是为了方便设计测试用例#xff09; #include iostream
#includetime.h
#includestdlib.hint * buildarray(int size)
{int* tmp(int *) mall… 试设计一个算法判断一个数据序列是否构成一个小根堆下面代码中的堆排序的部分仅仅是为了方便设计测试用例 #include iostream
#includetime.h
#includestdlib.hint * buildarray(int size)
{int* tmp(int *) malloc(sizeof(int)*size);for(int i0;isize;i) tmp[i]rand()%20;return tmp;
}void print(int * tmp,int size)
{for(int i0;isize;i)printf(%3d,tmp[i]);puts();
}void down(int * tmp,int size,int k)
{int recordtmp[k];for(int ik*21;isize;i2*i1){if(i1sizetmp[i]tmp[i1]) i;if(tmp[i]record) break;else tmp[k]tmp[i],ki;}tmp[k]record;
}
void adjust(int * tmp,int size)
{for(int isize/2-1;i0;i--)down(tmp,size,i);
}
bool small_heap(int *tmp,int size)
{for(int isize/2-1;i0;i--){if(tmp[i*21]tmp[i]) return false;if(i*22sizetmp[i*22]tmp[i]) return false;}return true;
}
int main() {int size15;srand(time(nullptr));int *a1 buildarray(size);printf(a1:);print(a1,size);adjust(a1,size);print(a1,size);//a1是一个经过了向下调整的数组是一个小根堆if(small_heap(a1,size)) printf(this is a min rooted heap\n);else printf(this is not a min rooted heap\n);int a2[]{1,2,5,4,4,9,11,16,3,8,10,16,9,14};//这里的元素3是导致这不是一个小根堆的原因printf(a2:);print(a2,14);if(small_heap(a2,14)) printf(this is a min rooted heap\n);else printf(this is not a min rooted heap\n);return 0;
}