问答题

阅读下列说明、流程图和算法,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 下面的流程图1—5用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下: 【流程图】
【算法说明】 将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数血p(int A[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],iht L;int H)的功能是实现数组A中元素的递增排序。 【算法】 void sort(int A[],int1,int H) { if (L<H) { k=p(A, L, R): //p()返回基准数在数组A中的下标 sort( (4) ); //小于基准数的元素排序 sort( (5) ); //大于基准数的元素排序 } }

【参考答案】

j-- (2) i++ (3)A[i]←pivot或[j]←pivot (4)A,L,k-1或A,L,k (5)A,k+......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【程序说明】定义一个多边形结构:struct polygon实现以下内容:(1)建立该结构的链表:create函数是创建链表,每输入一个结点的数据,就把该结点加入到链表当中,它返回创建的链表的头指针。(2)显示链表的各个结点数据:结点数据包括:多边形顶点数、各顶点的纵横坐标、当多边形顶点数为0时,链表创建结束。(3)编写一个函数disp,删除链表中的所有结点。需要注意的是:要先释放结点数据内存,再删除结点,如果在释放结点数据内存单元之前删除结点,则无法找到结点数据内存单元的地址,也就无法释放数据的内存单元。【程序】#include iostxeam. h #include iomanip. h stmct polygon{int n;int *x;int *y;polygon *next;};void Push(polygon*& head, int n){polygon* newNode = new polygon;newNode = new polygon;newNode->next= (1) ;newNode->x = new int[n];newNode->y = new int[n];newNode->n= (2) ;for(int i=0; i<= (3) ; i++) {cout<< 请输入多边形各顶点x、y坐标, 坐标值之间用空格分隔: ;cin>>newNode->x[i]>>newNode->y[i];}(4) = head; 在head前不需要额外的*head = newNode;}polygon *create(){polygon* head = NULL;polygon* tail;int n;cout<< 请输入多边形顶点的个数(顶点个数为0时结束): ;cin>>n;if(n==O) return (5) ;Push(head, (6) );tail = head;cout<< 请输入多边形顶点的个数(顶点个数为0时结束): ;cin>>n;while(n!=0){Push(tail->next, (7) ); 在tail->next增加结点tail = tail->next; advance tail to point to last nodecout<< 请输入多边形顶点的个数(顶点个数为0时结束): ;cin>>n;}remm head;}void disp(polygon *head){inti, No=l;eout<<setw( 10)<< x <<setw(6)<< y <<endl;while(head !=NULL){cout<< 第 <<No<< 结点: <<endl;for(i=0;i<=head->n-1;i++)cout<<setw(10)<<head->x [i] <<setw(6)<<head->y[i]<<endl;(8) ;he ad= (9) ;} Match while statement}void del(polygon *head){polygon *p;while(head!=NIILL{p= (10) ;head=head->next;delete p->x;delete p->y;delete p;} Match while statementvoid main(){polygon *head;head=create();disp(head);del(head);}