//对顺序表L进行堆排序
void heapSort(SqList *L){
for(int i=L->length/2;i>0;i--)
heapAdjust(L,i,L->length);
for(int i=L->length;i>1;i--){
Sawp(L,1,i);
heapAdjust(L,1,i-1);
}
}
//调整L,使L->r[s..m]成为最大堆
void heapAdjust(SqList *L, int s, int m){
int temp = L->r[s];
for(int i=s*2;i<=m;i*=2){
if(L-r[i]<l-r[i+1] && i<m)
i++;
if(temp>=L->r[i])
break;
L->r[s]=L->r[i];
s=i;
}
L-r[s] = temp;
}
堆排序算法
最新推荐文章于 2022-11-06 15:34:21 发布
本文介绍了一种基于最大堆的排序算法——堆排序。通过详细解释堆排序的过程,包括堆的调整算法,帮助读者理解如何利用堆特性实现高效排序。
766

被折叠的 条评论
为什么被折叠?



