1、从一个顺序存储在线性表的不减序列中,删除相等多余元素。
#define MAX 30
struct SlistTable{
int *elem;
int size;
};
void deleteDuplicate(SlistTable list)
{
int i=0;int j=0;
while(i <list.size)
{
if(list.elem[i]!=list.elem[j])
{_____(1)______}
i++;
}
_____(2)______
}
2、typedef struct elem{
int val;
struct elem *next;}intNode;
intNode *merge(intNode *a,intNode *b)
{//将两个升序链表a和b合并成一个升序链表
intNode *h=a,*p,*q;
while(b)
{
for(p=h;p&p->val <b->val;q=p,p->next);
if(p=h)
_____(3)____;
else
_____(4)____;
q=b;
b=b->next;
_____(5)_____;
}
return h;
}
3、在O(n)时间内从无序数组A[0...n-1]中找出第k个最小元素。
void Qselect(int A[],int k, int left,int right)
{
if(left>=right) return;
int Pivot=Median(A,left,right);//从A[left...right]取随机值作为枢纽元,并存放在A[right-1]位置上
i=left;
j=right-1;
for(;;)
{ while(A[++i] <Pivot) {};
while(A[--j]>Pivot) {};
if(i <j)
_______(6)____;
else
break;
}
Swap(&A[i],&A[right-1]);
if(k <=i)
Qselect(A,k,left,i-1);
else
_____(7)___ _____(8)_____;
}
int main()
{
int A[]={1,5,9,8,22,3,10};
Qselect(A,0,6,3);//第3个最小元素,A[k-1]为第K-1哥最小元素
}
4、对于一个二维数组,数字代表高度
1 2 3
8 9 4
7 6 5
每个点可想高度减小的上下左右4个点移动,边界除外。上面例子:9-8-7……2-1是最长的一条移动路径。
要求:能够求出任意输入的二维数组,输出最长路径的数目,例如本例就是9,要求算法效率高。
#define MAX 30
struct SlistTable{
int *elem;
int size;
};
void deleteDuplicate(SlistTable list)
{
int i=0;int j=0;
while(i <list.size)
{
if(list.elem[i]!=list.elem[j])
{_____(1)______}
i++;
}
_____(2)______
}
2、typedef struct elem{
int val;
struct elem *next;}intNode;
intNode *merge(intNode *a,intNode *b)
{//将两个升序链表a和b合并成一个升序链表
intNode *h=a,*p,*q;
while(b)
{
for(p=h;p&p->val <b->val;q=p,p->next);
if(p=h)
_____(3)____;
else
_____(4)____;
q=b;
b=b->next;
_____(5)_____;
}
return h;
}
3、在O(n)时间内从无序数组A[0...n-1]中找出第k个最小元素。
void Qselect(int A[],int k, int left,int right)
{
if(left>=right) return;
int Pivot=Median(A,left,right);//从A[left...right]取随机值作为枢纽元,并存放在A[right-1]位置上
i=left;
j=right-1;
for(;;)
{ while(A[++i] <Pivot) {};
while(A[--j]>Pivot) {};
if(i <j)
_______(6)____;
else
break;
}
Swap(&A[i],&A[right-1]);
if(k <=i)
Qselect(A,k,left,i-1);
else
_____(7)___ _____(8)_____;
}
int main()
{
int A[]={1,5,9,8,22,3,10};
Qselect(A,0,6,3);//第3个最小元素,A[k-1]为第K-1哥最小元素
}
4、对于一个二维数组,数字代表高度
1 2 3
8 9 4
7 6 5
每个点可想高度减小的上下左右4个点移动,边界除外。上面例子:9-8-7……2-1是最长的一条移动路径。
要求:能够求出任意输入的二维数组,输出最长路径的数目,例如本例就是9,要求算法效率高。