数据结构排序
单链表上的简单选择排序
void selectSort(LinkList &L)
{
LinkNode *h=L,*p,*q,*r,*s;
L=NULL;
while(h!=NULL)
{
p=s=h;//工作指针p,最大值的初始化指针为s
q=r=NULL;
while(p!=NULL)
{
if(p->data>s->data){
s=p;
r=q;
}
q=p;
p=p->next;
}
if(s==h) h=h->next;
else r->next=s->next;
s->next=L;
L=s;
}
}
判断一个堆是不是小顶堆
bool IsMinHeap(ElemType A[],int len)
{
if(len%2==0){
if(A[len/2]>A[len]) return false;
for(int i=len/2-1;i>=1;i--)
if(A[i]>A[i*2] || A[i]>A[i*2+1]) return false;
}
else{
for(int i=len/2;i>=1;i--)
if(A[i]>A[i*2] || A[i]>A[i*2+1]) return false;
}
return true;
}
网友评论