阅读以下说明和流程图,回答问题将解答填入对应栏。 [说明] 本流程图采用“双向冒泡法”实现对数组a[n]的排序。双向冒泡法就是在逐步缩小的数组内,分别从数组的两端开始向内搜索,同时将大数往上浮,小数往下沉,每次交换一组数。flag是一个标志

admin2010-12-16  47

问题 阅读以下说明和流程图,回答问题将解答填入对应栏。
   [说明]
   本流程图采用“双向冒泡法”实现对数组a[n]的排序。双向冒泡法就是在逐步缩小的数组内,分别从数组的两端开始向内搜索,同时将大数往上浮,小数往下沉,每次交换一组数。flag是一个标志,发生过交换就置为1,当这个循环过程都不再发生交换时,则数组排序完成。
   注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述;
   定义swAP[a,b]为将a和b两数交换。
   
   [问题]
   将流程图的(1)~(5)处补充完整。

选项

答案(1) left<right&&flag==l; (2) left,right-1,1; (3) a[i]>a[i+1]; (4) flag=1; (5) a[Right-i]<a[Right-i-1]

解析 本题目考查的是流程图。
   先题目中已经给出算法说明,是分别从数组的两端同时向内搜索,每次交换一组数,所以,可以判断,(1)中的条件应该由两部分组成,首先是left<right,因为这样才能构成一个数组,第二个条件是flag==1,如果它成立,则说明还有交换,要继续排序,如果flag==0,则说明没有交换了,排序完成,所以(1)要填入“left<right&&fla==1”。内循环开始,从数组两端,两两比较数的大小,所以(2)应填入“left,right-1,1”,在left端,当a>a[i+1]时,将两数交换,交换后将flag置1,即(3)填入“a>a[i+1]”,(4)填入“flag=1”;在right端,当a[Right-i]<a[Right-i-1]时,将两数交换,flag置1,所以(5)应填入“a[Right-i]<a[Right-i-1]”。
转载请注明原文地址:https://kaotiyun.com/show/o6jZ777K
0

最新回复(0)