博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请给出一个时间为O(nlgk)、用来将k个已排序链表的算法。此处n为所有输入链表中元素的总数。...
阅读量:6909 次
发布时间:2019-06-27

本文共 1823 字,大约阅读时间需要 6 分钟。

代码:

#include "iostream"#define null 0using namespace std;typedef struct node{    int data;    struct node *next;}Link;int heap_size=3;Link* createLink(){    int data;    Link *t,*h=null,*p;    cin>>data;    int i=0;    while(data!=0){        p=(Link*)malloc(sizeof(Link));        p->data=data;        p->next=null;        i++;        if(i==1)            h=t=p;        else {            t->next=p;            t=t->next;        }        cin>>data;    }    return h;}int left(int i){    return 2*i;}int right(int i){    return 2*i+1;}void min_Heapify(Link* A[],int i){    int l,r;    l=left(i);    r=right(i);    int smallest;    if(l<=heap_size&&A[i]->data>A[l]->data)        smallest=l;    else         smallest=i;    if(r<=heap_size&&A[smallest]->data>A[r]->data)        smallest=r;    if(smallest!=i){        Link *temp;        temp=A[i];        A[i]=A[smallest];        A[smallest]=temp;        min_Heapify(A,smallest);    }}Link *extract_MinHeap(Link*A[]){    Link* min;    min=A[1];    A[1]=A[1]->next;    if(A[1]==null){        A[1]=A[heap_size];        heap_size--;    }    min_Heapify(A,1);    return min;}void build_Minheap(Link*A[]){    heap_size=3;    for(int i=heap_size/2;i>=1;i--)        min_Heapify(A,i);}Link* mergeSort(Link*A[]){    Link *T,*n;    T=(Link*)malloc(sizeof(Link));    T->next=null;    n=T;    Link *p;    build_Minheap(A);    while(heap_size!=1){        p=extract_MinHeap(A);        p->next=null;        n->next=p;        n=n->next;    }    n->next=A[1];    return T;}void display(Link *h){    Link*p=h;    while(p!=null){        cout<
data<<" "; p=p->next; } cout<
next; while(p!=null){ cout<
data<<" "; p=p->next; } cout<

 

转载于:https://www.cnblogs.com/593213556wuyubao/archive/2012/12/23/2830293.html

你可能感兴趣的文章
wine中文乱码的终极解决方法
查看>>
PHP对CURL函数的封装,支持GET/POST请求
查看>>
sql server 存储过程事务与异常处理的一般方式
查看>>
vue-cli自己写的全局组件使用
查看>>
Java中的读/写锁
查看>>
Map部分常见问题
查看>>
Spring cloud Netflix中的超时配置
查看>>
VVDocumenter-Xcode
查看>>
Linux 安装 maven环境
查看>>
【数据结构】 单向链表
查看>>
System.out.printf() 格式化输出,快捷打印出当前时间
查看>>
RPM包制作
查看>>
objective-C中的description方法
查看>>
gzip文件内存解压后处理,再保存到文件
查看>>
Java 技巧
查看>>
Minor GC、Major GC和Full GC之间的区别-JVM
查看>>
jsp request 对象详解
查看>>
非标准C语言扩展函数实现进制转换
查看>>
thinkphp Tpl/User/index.html 用户首页模版
查看>>
Eclipse快捷键大全(转载)
查看>>