更多“编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?”相关问题
  • 第1题:

    编写递归算法,求以二叉链表存储的二叉树的深度。


    参考答案:

  • 第2题:

    在单链表上难以实现的排序方法有希尔排序、【 】和堆排序。


    正确答案:快速排序
    快速排序 解析:在单链表上难以实现的排序方法有希尔排序、快速排序和堆排序。因为这三种排序方法均适合完成顺序结构的排序,可随机访问其中的元素。而单链表属于动态的数据结构,访问元素要通过指针来实现。

  • 第3题:

    已知一个单链表中有3000个结点,每个结点存放一个整数,( )可用于解决这3000个整数的排序问题且不需要对算法作大的变动。

    A.直接插入排序方法

    B.简单选择排序方法

    C.快速排序方法

    D.堆排序方法


    正确答案:D

  • 第4题:

    函数实现单链表的删除算法,请在空格处将算法补充完整。


    正确答案:

    (1)p->next!=NULL(2)p->next=q->next

  • 第5题:

    在单链表上难以实现的排序方法有()、()和 ()。


    正确答案:快速排序;堆排序;希尔排序

  • 第6题:

    设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data域的值递增排序。


    正确答案: voidassending(Lnode*heaD.
    {Lnode*p,*q,*r,*s;
    p=head->next;q=p->next;p->next=NULL;
    while(q)
    {r=q;q=q->next;
    if(r->data<=p->datA.
    {r->next=p;head->next=r;p=r;}
    else
    {while(!p&&r->data>p->datA.
    {s=p;p=p->next;}
    r->next=p;s->next=r;}
    p=head->next;}
    }

  • 第7题:

    编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。


    正确答案: voidlinklist_c(Lnode*heaD.
    {Lnode*p;p=head;
    if(!p)returnERROR;
    while(p->next!=NULL)
    p=p->next;
    p->next=head;
    }
    设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N)。

  • 第8题:

    数据结构与算法中,快速排序是()的一种。

    • A、插入排序
    • B、选择排序
    • C、交换排序
    • D、归并排序

    正确答案:C

  • 第9题:

    问答题
    设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data域的值递增排序。

    正确答案: voidassending(Lnode*heaD.
    {Lnode*p,*q,*r,*s;
    p=head->next;q=p->next;p->next=NULL;
    while(q)
    {r=q;q=q->next;
    if(r->data<=p->datA.
    {r->next=p;head->next=r;p=r;}
    else
    {while(!p&&r->data>p->datA.
    {s=p;p=p->next;}
    r->next=p;s->next=r;}
    p=head->next;}
    }
    解析: 暂无解析

  • 第10题:

    问答题
    编写算法,实现带头结点单链表的逆置算法。

    正确答案: voidinvent(Lnode*heaD.
    {Lnode*p,*q;
    if(!head->next)returnERROR;
    p=head->next;q=p->next;p->next=NULL;
    while(q)
    {p=q;q=q->next;p->next=head->next;head->next=p;}
    }
    解析: 暂无解析

  • 第11题:

    填空题
    快速排序算法是基于()的一种排序算法。

    正确答案: 分治策略
    解析: 暂无解析

  • 第12题:

    问答题
    编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。

    正确答案: voidlinklist_c(Lnode*heaD.
    {Lnode*p;p=head;
    if(!p)returnERROR;
    while(p->next!=NULL)
    p=p->next;
    p->next=head;
    }
    设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N)。
    解析: 暂无解析

  • 第13题:

    编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?


    正确答案:
         

  • 第14题:

    用二分法插入排序方法进行排序,被排序的表(或序列)应采用的数据结构是______。

    A.单链表

    B.数组

    C.双向链表

    D.散列表


    正确答案:B
    解析:二分法插入排序只能采用顺序存储,算法是稳定的。而4个答案中只有数组才是顺序存储。

  • 第15题:

    用C#写一段选择排序算法,要求用自己的编程风格。


    正确答案:
     

  • 第16题:

    阅读以下说明和C语言函数,将解答填入答题纸的对应栏内。【说明】函数sort (NODE *head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻结点中的元素,若较小的元素在前面,则交换这两个结点中的元素值。其中,head指向链表的头结点。排序时,为了避免每趟都扫描到链表的尾结点,设置一个指针endptr,使其指向下趟扫描需要到达的最后一个结点。例如,对于图(a)的链表进行一趟冒泡排序后,得到图(b)所示的链表。




    答案:
    解析:
    (1) ptr->next(2) head->next(3) ptr!=endptr,或其等价形式⑷ptr(5) preptr

  • 第17题:

    快速排序算法是基于()的一种排序算法。


    正确答案:分治策略

  • 第18题:

    编写算法,实现带头结点单链表的逆置算法。


    正确答案: voidinvent(Lnode*heaD.
    {Lnode*p,*q;
    if(!head->next)returnERROR;
    p=head->next;q=p->next;p->next=NULL;
    while(q)
    {p=q;q=q->next;p->next=head->next;head->next=p;}
    }

  • 第19题:

    对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()


    正确答案:3

  • 第20题:

    学校要举行运动会,请你设计一个能够对运动员分数自动排序的软件,如果要设计此软件,以下最好的方法和步骤是()。

    • A、分析问题,编写程序,设计算法,调试程序
    • B、设计算法,编写程序,提出问题,调试程序
    • C、提出问题,设计算法,编写程序,调试程序
    • D、设计算法,提出问题,编写程序,调试程序

    正确答案:C

  • 第21题:

    填空题
    在单链表上难以实现的排序方法有()、()和 ()。

    正确答案: 快速排序,堆排序,希尔排序
    解析: 暂无解析

  • 第22题:

    单选题
    数据结构与算法中,快速排序是()的一种。
    A

    插入排序

    B

    选择排序

    C

    交换排序

    D

    归并排序


    正确答案: A
    解析: 暂无解析

  • 第23题:

    单选题
    学校要举行运动会,请你设计一个能够对运动员分数自动排序的软件,如果要设计此软件,以下最好的方法和步骤是()。
    A

    分析问题,编写程序,设计算法,调试程序

    B

    设计算法,编写程序,提出问题,调试程序

    C

    提出问题,设计算法,编写程序,调试程序

    D

    设计算法,提出问题,编写程序,调试程序


    正确答案: C
    解析: 暂无解析