排序是为提高数据查询速度而设置的一种逻辑手段,从算法设计角度看,排序算法体现了算法设计的某些重要原则和技巧;内排序其主要有直接插入排序、折半插入排序、希尔排序、快速排序、简单选择排序、堆排序、二路归并排序、基数排序等;试问:在以上排序分类中哪些是稳定的排序算法?其时间复杂度为O(n2)的有哪些?
查看答案
简述下面算法的功能(栈和队列的元素类型均为int)void algo3(Queue &Q){Stack S; int d;InitStack(S);while(!QueueEmpty(Q)){DeQueue(Q,d);Push(S,d);}while(!StackEmpty(S)){Pop(S,d); EnQueue(Q,d);}}
已知一棵二叉树的中序遍历序列和先序遍历序列为,试问能不能唯一确定一棵二叉树。若给定先序遍历序列和后序遍历序列,能不能唯一确定呢?
设有5000个无序的元素,希望用最快速度挑选出其中前10个最大的元素,在以下的排序方法中,采用哪种方法最好?为什么?(快速排序,堆排序,基数排序)
1.单链表类型定义如下:typedef struct node {int data;struct node *next;} ListNode;typedef ListNode *LinkList;用不带头结点的单链表存储待排数据,链表头指针为head。下列直接选择排序算法对链表按升序进行排序,请在答题纸相应位置填写适当内容使算法完整。(6分)Void f1(LinkList head){ ListNode *p, *q, *r;int tmp;p=head;while(p){ q=p;r= r->next;while( (1) ){ if( (2) ) q=r;r= r->next;}tmp=q->data;q->data=p->data;p->data=tmp;p= (3) ;}}(1)(2)(3)