资源描述:
《第5章第三讲数组举例.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章第3讲数组举例选择法排序例2:用选择排序法对键盘输入的N个数从小到大进行排序.基本思想:假设有N个数据放在数组a中,现要把这N个数从小到大排序.首先:在a[0]到a[N-1]的范围内,选出最小值与a[0]交换;然后:在a[1]到a[N-1]范围内,选出最小值与a[1]交换;接着是a[2]到a[N-1]的范围,这样依次进行下去,进行N-1次选择后就可完成排序.即第i趟排序的待排序范围是a[i]~a[N-1]的元素,要从中选出值最小的元素并与a[i]交换位置。第5章第3讲数组举例选择法排序例:对{6,8,5,4,6,9,3,1}用选择排序法
2、进行排序.第i趟选择的步骤实现:(1)引入整型变量J和K,变量J赋初值i+1,变量K赋初值i;(2)若a[K]>a[J],则将J的值赋给K.(使K总是记录着最小元素的下标).(3)每进行完一次比较,J++;回到(2);(4)当J>N-1,若K!=i,交换a[i]和a[K].第一次选择排序:aKj当a[K]A[j]则执行K=j,j++3iKJ20第5章
3、第3讲数组举例选择法排序比较到待排序元素最后:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]第一趟选择结果为:68546931iKj7iKJ70当A!=K则交换a[K]与a[I]18546936第5章第3讲数组举例选择法排序第二趟排序:待排序元素结果为:18546936iKj2iKJ1113546986iKj7iKJ61第5章第3讲数组举例选择法排序同样第三趟结果为:第四趟结果为:第五趟结果为:第六趟结果为:第七趟结果(最终)为:1345698613456986134569861345668913456689第5章第3讲数组
4、举例选择法排序main(){inti,j,k,a[8],temp;clrscr();for(i=0;i<8;i++)scanf("%d",&a[i]);for(i=0;i<8-1;i++){k=i;for(j=i+1;j<8;j++)if(a[k]>a[j])k=j;if(k!=i){temp=a[i];a[i]=a[k];a[k]=temp;}}for(i=0;i<8;i++)printf("%d,",a[i]);printf("");}第5章第3讲数组举例选择法排序作业5.5讲解有18个数围成一圈,求相临三个数之和的最大数.思路:1、
5、18个数肯定是用数组来保存2、围成一圈,就是逻辑上理解最后一个后面又是第一个3、相临三个数的和有18个4、比较这18个和,找出最大作业5.5讲解#includevoidmain(){inta[18],i,max,t,k,m;printf("Pleaseinput:");for(i=0;i<18;i++)scanf("%d",&a[i]);max=a[0]+a[1]+a[2];for(i=1;i<18;i++){k=(i+1)%18;m=(i+2)%18;t=a[i]+a[k]+a[m];if(t>max)max=t;}p
6、rintf("maxis%d",max);}