void shellsort(Sortobject*pvector){ /*Shell sort*/
int incr,start;
for (incr=pvector->n/2;incr>0;incr/=2) /*for each increment*/
for(start=0;start<incr;start++) /*Sort each sublist*/
inssort2(pvector,start,incr);
}
/*Modified version of Insertion Sort for varying increments*/
void inssort2(SortObject*pvector,int start,int incr){
int i,j;
RecordNode temp;
for(i=start+incr;i<pvector->n;i+=incr){
temp==pvector->record[i];
for(j=i;(j>=incr)&&(temp.key<pvector->record[j-incr].key);j-=incr)
pvector->record[j]=pvector->record[j-incr];
pvector->record[j]=temp;
}
}
已知k1,k2,…,kn是堆,试写一算法将k1,k2,…,kn,kn+1调整为堆。再用此思想写一个从空堆开始,一个一个添入元素的建堆算法。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!