问答题
使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,实现函数sort(intA[],int n),用选择排序法把数组从大到小排序。 提示:选择排序法的思想是: (1)反复从还未排好的那部分线性表中选择出关键字最小的节点; (2)按照从线性表中选择出的顺序排列节点,重新组成线性表; (3)直到未排序的那部分为空,则重新形成的线性表是一个有序的线性表。 补充函数sort(int A[],int n),实现选择排序。 注意:请勿改动主函数。#include<ioStream.h>#define N 10void Sort(int A[N],int n){}int main(){ int A[N]={1,2,1 0,5,7,1 9,34,7 8,一3,8}; sort(A,1 0); for(int i=0;i<Si Zeof(A)/sizeof(int);i++) { cout<<A[i]<<‘ ’; } cout<<endl; return 0;}
【正确答案】正确答案:int i,j; for(i=0;i<n一1;i++) { for(j=0;j<n一1一i;j++) { if(A[j]>A[j+1]) //如果前面的数比后面的大则进行交换 { int t=A[j];//做交换 A[j]=A[j+1]; A[j+1]=t; } } }
【答案解析】解析:选择法的思路是:将相邻两个数比较,将小的调到前头。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组则会变成有序的,而且是由小到大的顺序。