语言基础及教程 11_第1页
语言基础及教程 11_第2页
语言基础及教程 11_第3页
语言基础及教程 11_第4页
语言基础及教程 11_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE课题任务5.3对某品牌新能汽车销售人员业绩排序(一维数组排序)课型讲练授课班级授课时数2教学目标1、掌握一维数组的定义、引用、初始化2、掌握数组的输入和输出教学重点1、一维数组的定义、引用、初始化2、一维数组实际应用教学难点数组的应用-从0开始学情分析数组概念的理解、数组在内存中的存储实质,地址的概念都应在刚接触数组时有所了解。学生组成一个班级利用学号组织。但是学号是从1开始,数组的开始从0开始,容易产生“失误”。教学效果教后记任务5.3对某品牌新能汽车销售人员业绩排序(一维数组排序)5.3.1任务目标创建一个C语言程序,按非递减顺序显示某市海格新能源全天然气客车的月新增量(1-6月,每月新增量为60,54,50,70,36,51)。5.3.2知识储备对于杂乱无章的数据,有时我们需要按照一定规律进行排列,我们本次课程就来研究这个问题。1.排序对于搜索大型数据库来说,对信息进行排序的算法是至关重要的。想象一下词典或电话号码本,用它们来查找信息都是相对容易和方便的,这是因为其中的信息按按字母表或词曲顺序排序了。排序是一种非常有助于解决问题的技术,因此如何有效的排序的问题本身是一个重要的研究领域。排序有多种方式,有冒泡排序、简单选择排序、直接插入排序等。2.冒泡排序这种方法可形象描述为:使较小的值象水中的气泡一样逐渐“上浮”到数组的顶部,而较大的值则逐渐“下沉”到数组的底部。这种技术要排序好几轮,每轮都要比较连续的数组元素对。如果某一对元素的值本身是升序排的,那就保持原样,否则交换其值。冒泡排序的基本思想是:从前向后依次比较相邻两个数的值,如果前者比后者大,那么这两个数交换,否则不交换,第一次排序结束,最大数“后沉”到最后一个。排序过程示例(设N=8):每趟只将方括号中的数据从左向右两两比较,让较大者不断“后沉”到方括号外。假设原始数据[4938659776132750]第一趟排序后[38496576132750]97第二趟排序后[384965132749]7697第三趟排序后[3849132750]657697第四趟排序后[38132749]50657697第五趟排序后[132738]4950657697第六趟排序后[1327]384950657697第七趟排序后[13]27384950657697最后排序结果1327384950657697读者可以看到第五趟排序结束后,其实已经得到我们最终所需的结果了,如果不对程序进行优化,计算机就一定会进行七趟排序,那么应该如何处理,请读者自行思考,也可查看相关资料。3.选择法排序选择法的基本思想是:用变量p来存放最大数所在的位置,若数组中有n个数,首先p中存放0,认为a[0]中数最大。然后把a[p]跟后面的a[1]比较,若a[1]比a[p]大,则p=1;否则p不变。接着a[p]跟后面的a[2]比较,若a[2]比a[p]大,则p=2;否则p不变。接着a[p]跟后面的a[3]比,a[4]比,……,与最后一个元素比较。这时p中存放的是所有元素中最大元素所在的位置。把a[0]中的数与a[p]中的数交换。a[0]中存放最大元素。再从余下的n-1个数中找最大的数与a[1]交换,重复直到排序结束。假设原始数据[4938659776132750]第一趟排序后13[38659776492750]第二趟排序后1327[659776493850]第三趟排序后132738[9776496550]第四趟排序后13273849[76976550]第五趟排序后1327384950[976576]第六趟排序后132738495065[9776]第七趟排序后13273849506576[97]最后排序结果13273849506576974.示例:键盘输入10个同学的C语言成绩,按从高到低显示每个同学的成绩。程序代码:#include"stdio.h"#defineN10voidmain(){intgrade[N];inti,j,temp;for(i=0;i<N;i++)scanf("%d",&grade[i]);printf("排序前10位同学的成绩:\n");for(i=0;i<N;i++)printf("%d",grade[i]);printf("\n从高到低排序后10位同学的成绩:\n");for(i=0;i<=N-2;i++)//冒泡排序{ for(j=0;j<=N-i-2;j++)if(grade[j]<grade[j+1])//条件成立,相邻两个值进行交换{temp=grade[j];grade[j]=grade[j+1];grade[j+1]=temp;}}for(i=0;i<N;i++)printf("%d",grade[i]);}5.3.3典型实例典型案例1:下表为海格某汽油小客车在不同时段的耗油量,编写程序将该小客车的不同时段耗油量从高到低进行排列。程序代码:#include"stdio.h"voidmain(){doubleoilconsumption[9]={8.5,8.8,9.2,10.1,7.8,8.6,8.7,8.7,9.5};inti,j;doubletemp;for(i=0;i<9;i++){ for(j=0;j<8-i;j++) { if(oilconsumption[j]<oilconsumption[j+1]) { temp=oilconsumption[j]; oilconsumption[j]=oilconsumption[j+1]; oilconsumption[j+1]=temp; } }}printf("耗油量从高到低依次是:");for(i=0;i<9;i++)printf("%.1f",oilconsumption[i]);}典型案例2:已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},将销售量从小到大排序。程序代码#include"stdio.h"voidmain(){intsales[12]={10,12,15,14,16,8,7,14,16,17,11,12};inti,j,t;for(i=0;i<=10;i++){ for(j=i+1;j<=11;j++) { if(sales[i]>sales[j]) { t=sales[j]; sales[j]=sales[i]; sales[i]=t; } }}printf("销售量从小到大排序:");for(i=0;i<9;i++)printf("%d",sales[i]);}5.3.4任务分析与实践程序代码#include"stdio.h"#defineN6voidmain(){intV_number[N]={60,54,50,70,36,51}; inti,j,p; inttemp; printf("排序前新增量:"); for(i=0;i<N;i++) printf("%d",V_number[i]); printf("\n"); printf("排序后:"); for(i=0;i<N-1;i++) { p=i; for(j=i+1;j<N;j++) if(V_number[p]<V_number[j]) { p=j; } temp=V_number[p]; V_number[p]=V_number[i]; V_nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论