C#程序设计

在Array类中,可以对一维数组中的元素进行排序的方法是()。A、Sort()B、Clear()C、Copy()D、Reverse()

题目

在Array类中,可以对一维数组中的元素进行排序的方法是()。

  • A、Sort()
  • B、Clear()
  • C、Copy()
  • D、Reverse()
参考答案和解析
正确答案:A
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

JavaScript中哪种方法可以对数组元素进行排序()。

A.add()

B.join()

C.sort()

D.length()


正确答案:C

第2题:

阅读下列说明、流程图和算法,将应填(n)处的字句写在对应栏内。

[说明]

下面的流程图(如图3所示)用N - S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为 low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:

[流程图]

[算法说明]

将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int A[],int low,int hieh)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],int L,int H)的功能是实现数组A中元素的递增排序。

[算法]

void sort(int A[],int L,int H) {

if (L<H) {

k=p(A,L,R); //p()返回基准数在数组A中的下标

sort((4)); //小于基准敷的元素排序

sort((5)); //大于基准数的元素排序

}

}


正确答案:(1)j--(2)i++(3)A[i]←pivot或[j]←pivot(4) ALk-1或ALk (5)Ak+1H或AkH
(1)j--(2)i++(3)A[i]←pivot或[j]←pivot(4) A,L,k-1或A,L,k (5)A,k+1,H或A,k,H 解析:题目考查快速排序算法。快速排序采用了一种分治的策略,通常称为分治法。其基本思想是:将原问题分解为若干个规模更小,但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
快速排序的具体过程为:第一步,在待排序的n个记录中任取一个记录,以该记录的排序码为基准,将所有记录分成2组,第一组各记录的排序码都小于等于该排序码,第二组各记录的排序码都大于该排序码,并把该记录排在这2组中间,这个过程称为一次划分。第二步,采用同样的方法,对划分出来的2组元素分别进行快速排序,直到所有记录都排到相应的位置为止。
在进行一次划分时,若选定以第一个元素为基准,就可将第一个元素备份在变量pivot中,如图中的第①步所示。这样基准元素在数组中占据的位置就空闲出来了,因此下一步就从后向前扫描。如图中的第②步所示,找到一个比基准元素小的元素时为止,将其前移,如图中的第③步所示。然后再从前向后扫描,如图中的第④步所示,找到一个比基准元素大的元素时为止,将其后移,如图中的第⑤步所示。这样,从后向前扫描和从前向后扫描交替进行,直到扫描到同一个位置为止,如图中的第⑥步所示。
由题目中给出的流程图可知,以第一个元素作为基准数,并将A[low]备份至pivot,i用于从前向后扫描的位置指示器,其初值为low, j用于从后往前扫描的位置指示器,其初值为high。当i1)从后向前扫描数组A,在ipivot,就继续向前扫描(j--);如果被扫描的元素A[i]2)这时,再从前向后扫描,在ipivot就停止扫描,并将此元素的值赋给目前空闲着的A[j]。
3)这时又接第(1)步,直到i>j时退出循环。退出循环时,将pivot赋给当前的A[i](A[i]←pivot)。
递归函数的目的是执行一系列调用,直到到达某一点时递归终止。为了保证递归函数正常执行,应该遵守下面的规则:
1)每当一个递归函数被调用时,程序首先应该检查基本的条件是否满足,例如,某个参数的值等于0,如果是这种情形,函数应停止递归。
2)每次当函数被递归调用时,传递给函数一个或多个参数,应该以某种方式变得“更简单”,即这些参数应该逐渐靠近上述基本条件。例如,一个正整数在每次递归调用时会逐渐变小,以至最终其值到达0。
本题中,递归函数sort(int A[],int L, int H)有3个参数,分别表示数组A及其下界和上界。根据流程图可知,这里的L相当于流程图中的i,这里的H相当于流程图中的j。因为P()返回基准数所在数组A中的下标,也就是流程图中最后的“A[i]←pivot”中的i。根据快速排序算法,在第一趟排序后找出了基准数所在数组A中的下标,然后以该基准数为界(基准数在数组中的下标为k),把数组A分成2组,分别是A[L,…,k-1)和A[k+1,…,H),最后对这2组中的元素再使用同样的方法进行快速排序。

第3题:

下列选项中,关于列表的sort方法描述正确的是。()

A、如果列表中的各元素可直接比较大小,则可以不指定key参数

B、reverse参数决定了将列表中的元素按升序还是降序排列

C、key参数接收一个函数,通过该函数获取用于排序时比较大小的数据

D、reverse参数默认值为False,表示将列表中的元素按降序排列


正确答案:A,B,C

第4题:

在JavaScript中( )方法可以对数组元素进行排序

A.add( )

B.join( )

C.sort( )

D.length( )


正确答案:C

第5题:

补充程序Ccon042.C,使程序中的sort()函数用冒泡法对数组a中的m个元素从大到小排序


for(i=0;i</**/m-1/**/;i++)
if/**/(a[j]<a[j+1])/**/
a[j]=/**/a[j+1]/**/;

第6题:

下列关于Arrays类说法错误的是()

A、Arrays类用于对数组进行排序和搜索的类

B、Arrays类提供了sort()和binarySearch()的方法

C、Arrays类是自定义的可以实现排序和查找的操作类

D、Arrays类定义在java.util包中


参考答案:CD

第7题:

阅读下列说明、流程图和算法,将应填入(n)处的字句写在对应栏内。

【流程图说明】

下图所示的流程图5.3用N-S盒图形式描述了数组Array中的元素被划分的过程。其划分方法;以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于Array[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。

【算法说明】

将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int Array[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组Ar ray中的下标。递归函数void sort(int Array[],int L,int H)的功能是实现数组Array中元素的递增排序。

【算法】

void sort(int Array[],int L,int H){

if (L<H) {

k=p(Array,L,H);/*p()返回基准数在数组Array中的下标*/

sort((4));/*小于基准数的元素排序*/

sort((5));/*大于基准数的元素排序*/

}

}


正确答案:(1)j←j-1
(1)j←j-1

第8题:

已知函数 void- sort(int Array[-1 int N的功能:采用选择排序法将具有N元素的整型数组Aray按由大到小排序元素,排序好的元素仍然放在数组Aray里面。例如:如果原来数组为”1432567,则排序后为”7654321″。編写该函数的实现代码,并要求编写main()函数,对实现函数的进行测试



请帮忙给出正确答案和分析,谢谢


答案:

void select_sort(int Array[], int n)//n为数组a的元素个数
{    
    for (int i = 0; i<n - 1; i++)//进行N-1轮选择
    {
        int min_index = i;    
        for (int j = i + 1; j<n; j++)//找出第i小的数所在的位置
        {
            if (Array[j] > Array[min_index])
            {
                min_index = j;
            }
        }
        //将第i小的数,放在第i个位置;如果刚好,就不用交换
        if (i != min_index)
        {
            int temp = Array[i];
            Array[i] = Array[min_index];
            Array[min_index] = temp;
        }
    }
}

int main()
{
    int num[7] = { 1, 2, 3, 4, 5, 6, 7};
    select_sort(num, 7);
    printf("\n结果如下:\n");
    for(int i=0; i<7; i++)
    {
        printf("\n%d\n ", num[i]);
    }        
    printf("\n");
 }

测试结果:


解析:

选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。

第9题:

将当前表中当前记录的值存储到指定数组的命令是( )。 A.GATHERB.CoPY TO ARRAY

将当前表中当前记录的值存储到指定数组的命令是( )。

A.GATHER

B.CoPY TO ARRAY

C.scATTER

D.STORE TO ARRAY


正确答案:D
D。【解析】用SCATTER从当前记录中取特定字段的值赋给数组:(数组长度、类型自动与所给字段相同)用COPYTOARRAY从当前记录中取所有字段的值赋给数组:(数组长度、类型自动与表中全部字段相同)把数组中的数据传给当前表中的当前记录:gatherfrom数组名[fields字段名表]用数组向当前表添加记录:appendfromarray数组名[for条件][[fields字段名表]

第10题:

●试题二

阅读下列说明、流程图和算法,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

下面的流程图(如图3所示)用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:

【流程图】

图3流程图

【算法说明】

将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int A[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],int L,int H)的功能是实现数组A中元素的递增排序。

【算法】

void sort (int A[], int 1,int H){

if ( L<H){

k=p(A,L,R);//p()返回基准数在数组A中的下标

sort( (4) );//小于基准数的元素排序

sort( (5) );//大于基准数的元素排序

}

}


正确答案:
●试题二【答案】(1)j--(2)i++(3)A[i]←pivot或[j]←pivot(4)A,L,k-1或A,L,k(5)A,k+I,H或A,k,H【解析】题目考查快速排序算法。快速排序采用了一种分治的策略,通常称为分治法。其基本思想是:将原问题分解为若干个规模更小,但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。快速排序的具体过程为:第一步,在待排序的n个记录中任取一个记录,以该记录的排序码为基准,将所有记录分成2组,第一组各记录的排序码都小于等于该排序码,第二组各记录的排序码都大于该排序码,并把该记录排在这2组中间,这个过程称为一次划分。第二步,采用同样的方法,对划分出来的2组元素分别进行快速排序,直到所有记录都排到相应的位置为止。在进行一次划分时,若选定以第一个元素为基准,就可将第一个元素备份在变量pivot中,如图中的第①步所示。这样基准元素在数组中占据的位置就空闲出来了,因此下一步就从后向前扫描。如图中的第②步所示,找到一个比基准元素小的元素时为止,将其前移,如图中的第③步所示。然后再从前向后扫描,如图中的第④步所示,找到一个比基准元素大的元素时为止,将其后移,如图中的第⑤步所示。这样,从后向前扫描和从前向后扫描交替进行,直到扫描到同一个位置为止,如图中的第⑥步所示。由题目中给出的流程图可知,以第一个元素作为基准数,并将A[low]备份至pivot,i用于从前向后扫描的位置指示器,其初值为low,j用于从后往前扫描的位置指示器,其初值为high。当i<j时进行循环:1)从后向前扫描数组A,在i<j的情况下,如果被扫描的元素A[j]>pivot,就继续向前扫描(j--);如果被扫描的元素A[i]<pivot就停止扫描,并将此元素的值赋给目前空闲着的A[i]。2)这时,再从前向后扫描,在i<j的情况下,如果被扫描的元素A[j]<pivot,就继续向后扫描(i++);如果被扫描的元素A[j]>pivot就停止扫描,并将此元素的值赋给目前空闲着的A[j]。3)这时又接第(1)步,直到i>j时退出循环。退出循环时,将pivot赋给当前的A[i](A[i]←pivot)。递归函数的目的是执行一系列调用,直到到达某一点时递归终止。为了保证递归函数正常执行,应该遵守下面的规则:1)每当一个递归函数被调用时,程序首先应该检查基本的条件是否满足,例如,某个参数的值等于0,如果是这种情形,函数应停止递归。2)每次当函数被递归调用时,传递给函数一个或多个参数,应该以某种方式变得"更简单",即这些参数应该逐渐靠近上述基本条件。例如,一个正整数在每次递归调用时会逐渐变小,以至最终其值到达0。本题中,递归函数sort(intA[],intL,intH)有3个参数,分别表示数组A及其下界和上界。根据流程图可知,这里的L相当于流程图中的i,这里的H相当于流程图中的j。因为P()返回基准数所在数组A中的下标,也就是流程图中最后的"A[i]←pivot"中的i。根据快速排序算法,在第一趟排序后找出了基准数所在数组A中的下标,然后以该基准数为界(基准数在数组中的下标为k),把数组A分成2组,分别是A[L,…,k-1]和A[k+l,…,H],最后对这2组中的元素再使用同样的方法进行快速排序。

更多相关问题