使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(int A[],int n),用冒泡法将数组排序。 提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从

admin2015-05-30  21

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(int A[],int n),用冒泡法将数组排序。
    提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组则会变成有序的,而且是由大到小的顺序。
    注意:不能修改程序的其他部分,并且不能删除其他的部分,也不能修改程序的结构。
    1    #include
    2  #define N 10
    3  void sort(int A[N],int n)
    4    {
    5
    6  }
    7    int main()
    8  {
    9    int A[N]=(5,7,4,6,10,13,78,-4,9,20} ;
    10    sort(A,10);
    11    for(int i=0;i    12    {
    13    cout<<<’  ’;
    14    }
    15    cout<    16    return 0;
    17    }

选项

答案1 int i,j,k,t ; 2 for( i=0 ; i
解析 函数sort(int A[],int n)用冒泡排序法把数组进行从大到小的排序,冒泡法排序利用了求数组中最小值及其位置的算法,首先从n个数中找出最大值,放在第一个元素位置上,再从剩下的n-1个数中找出最大值,放在第二个元素位置上,这样不断重复下去,直到剩下最后一个数。
    [解题思路]
    (1)以数组“A[]={3,8,7,6,5,0,1,2,9,4}”为例来说明具体的排序过程,第一次选择:第一步从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行九次比较,n个元素要进行n一1次比较。设置两层循环,外层循环变量i从0到n.1,内层循环变量从i开始到n.1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。
    (2)在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。
转载请注明原文地址:https://kaotiyun.com/show/rPNp777K
0

最新回复(0)