【说明】 以下程序实现数据的排序,将n个整数分别按照升序和降序进行排序,类SortInt_1实现升序排序,类SortInt_2实现降序排序。 【Java代码】 class SortInt_1{int i,i,k,temp;void SortInt(int a1,int a2[]){//升序排序 for(i=0;i<a1-1;i++){ k=i; for(j=i+1;j<a1;j++){if( (1) ) k=j;if(k !=i){ temp=a2[i];a2[i]=a2[k];a2[k]=temp;} } }} } class SortInt_2 (2) { int i,j,k,temp; void SortInt(int a1, int a2[]){//降序排序 for(i=0; i<a1-1;i++){ k=i; for(j=i+1;j<a1;j++){ if( (3) )k=j; } if(k !=i){ temp=a2[i];a2[i]=a2[k];a2[k]=temp; } } } } public class test{ public static void main(String args[]){ int a[]={10,55,100,35,87,90,100,16}; SortInt_1 NewInt= (4) ; NewInt.SortInt(a.lenvh,a);//调用SortInt_1类的方法 System.out.println("升序排列的数据: "); for(int i=0;i<a.length;i++){System.out.print(a[i]+" "); } System.out.println(); NewInt=new SortInt_2();//创建类SortInt_2的对象 (5) ;//调用相应方法进行降序排序 System.out.println("降序排列的数据: "); for(int i=0;i<a.length;i++){System.out.print(a[i]+" "); } } }
参考答案:
解析:(1) a2[k]>a2[j] (2) extends SortInt_1 (3) a2[k]<a2[j] (4) new SortInt_1() (5) NewInt.SortInt(a.length,a)
[分析]: 本题所采用的排序方法是简单选择排序,即:对n个记录进行选择排序。基本思想如下,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换,当i等于n时所有记录有序排列。 据此,类SortInt_1中的SortInt方法实现升序排序,则每次应该选择尚未排序记录中关键字最小的记录,因此空(1)应填a2[j]<a2[k]。同理,类SortInt_2中的SortInt方法实现降序排序,则每次应该选择尚未排序记录中关键字最大的记录,故空(3)应填a2[j]>a2[k]。 根据说明,紧跟空(4)的语句NewInt.SortInt(a.length,a)是调用SortInt_1类的方法,意味着此时NewInt是一个SortInt_1类实例,故空(4)应填new SortInt_1()。 接着,有语句“NewInt=new SortInt_2()” 创建类SortInt_2的对象并将其赋值给NewInt变量,根据赋值兼容规则,这意味着SortInt_2对象是一个Sortlnt_1对象,亦即SortInt_2是 SortInt_1的子类,故空(2)应填extends SortInt_1。 空(5)比较简单,对照上述的调用,可得空(5)应填NewInt.SortInt(a.length,a)。