2019-07-16

2019-07-16  本文已影响0人  桐桑入梦

数据结构排序

单链表上的简单选择排序

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;
}
上一篇下一篇

猜你喜欢

热点阅读