欢迎来到天天文库
浏览记录
ID:14371717
大小:1.10 MB
页数:113页
时间:2018-07-28
《第五章 数组算法总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章数组数组的概念:一组相同类型数据的集合,数组中的所有元素都只能是同一个类型的,数组中的元素在内存中的空间是连续的,数组的定义、数组元素的引用和数组的初始化看书或者课件容易错的地方:u数组的定义语句如:inta[10]是定义了10个整型元素的数组,表示一共有a[0]----a[9]10个元素,切记Tc中元素的下标是从0开始,所以最后一个元素的下标是9而不是10!!!!!u只有定义语句Inta[10]时,表示定义了一个数组,数组名为a,一共有10个元素,其他任何地方出现a[i]都表示一个元素的
2、引用!!!数组中最常用也是最重要的算法就是通过下标的变化来表示引用数组中的不同的元素,也就是数组元素的遍历,比如inta[10],则有10个元素,分别是a[0]-----a[9],则可以通过一个变量i从0循环到9,for(i=0;i<=9;i++)a[i]这样类似的方法来表示遍历数组中的元素!!(一)一维数组主要算法:1.数组元素的遍历:数组元素的输入输出,如果a数组中数组元素有n个,那么数组元素的引用是从a[0]----a[n-1],我们的思想是通过一个变量i从0循环到n-1,那么a[i]就可
3、以表示a[0]到a[n-1]一共n个元素了main(){inta[10],i;for(i=0;i<10;i++)/*变量i做下标,取值0~9,分别表示对第一个元素a[0]到最后一个scanf(“%d”,&a[i]);元素a[9]进行赋值*/printf(“”);for(i=0;i<10;i++)printf(“%5d”,a[i]);/*从头到尾输出数组的每一个元素*/printf(“”);}1.从一个数组中到处最大值和最小值:算法思想是用一个变量max表示存储最大值,那么给max赋初值为
4、a[0],即从第一个开始,假设第一个元素是当前最大的,然后遍历数组中的每一个元素,每一个元素都跟max进行比较,如果有比max大的则修改max的值,求最小值的思路跟最大值类似。main(){inti,n;floata[10],max,min;printf(“inputdatanumbers:”);for(i=0;i<10;i++)scanf(“%f”,&a[i]);max=min=a[0];/*设最大数和最小数都为a[0]*/for(i=1;i<10;i++){if(a[i]>max)max=a
5、[i];if(a[i]6、------a[4],a[1]----a[2]这两对进行交换,也就是5个数只需要交换2次,如果是6个数则需要交换3次,也就是如果是n个数只需要交换n/2次,每次进行交换的时候,a[0]与a[4],a[1]与a[3],发现其规律是a[i]与a[4-i]进行交换,也就是a[i]与a[n-1-i]进行交换,所以i是从0开始,一直到n/2-1为止。main(){inti,t;inta[5]={15,6,7,8,19};for(i=0;i<2;i++){t=a[i];a[i]=a[4-i];a[4-i]=7、t;}for(i=0;i<5;i++)printf(“%3d”,a[i]);}该算法要注意的地方是5个数只需交换两次,6个数只需交换3次,如果6个数交换6次,则又会交换回原来的样子,所以切记不能多交换!!a[0]5a[1]9a[2]3a[3]6a[4]23.直接选择排序算法:如果有一个数组,inta[5]={5,2,6,1,4},要给这五个数进行从小到大的排序,也就是a[0]中要存放最小的,a[1]中存放次小的……那么我们考虑要实现五个数的按顺序排序,步骤应该是一个一个来的,也就是先考虑如何把五8、个数中最小的放到a[0],定下一个最小的a[0]之后,再考虑把剩下四个数当中最小的放到a[1],如此类推,那么五个数我们要定四趟,每一趟定一个数,从a[0]定到a[3],那么最后当剩下一个数就不用再定了,那每一趟又是怎么定的呢?我们考虑要把五个数当中最小的放到a[0]中,那直接选择排序的算法思想是把a[0]跟后面的每一个数进行比较,也就是从a[1]一直比到a[4],如果有比a[0]小的那么就进行交换,这样就可以确保比完后a[0]中存放的是五个数当中最小的了,这是第一趟的思路,以此类推,定完a[0
6、------a[4],a[1]----a[2]这两对进行交换,也就是5个数只需要交换2次,如果是6个数则需要交换3次,也就是如果是n个数只需要交换n/2次,每次进行交换的时候,a[0]与a[4],a[1]与a[3],发现其规律是a[i]与a[4-i]进行交换,也就是a[i]与a[n-1-i]进行交换,所以i是从0开始,一直到n/2-1为止。main(){inti,t;inta[5]={15,6,7,8,19};for(i=0;i<2;i++){t=a[i];a[i]=a[4-i];a[4-i]=
7、t;}for(i=0;i<5;i++)printf(“%3d”,a[i]);}该算法要注意的地方是5个数只需交换两次,6个数只需交换3次,如果6个数交换6次,则又会交换回原来的样子,所以切记不能多交换!!a[0]5a[1]9a[2]3a[3]6a[4]23.直接选择排序算法:如果有一个数组,inta[5]={5,2,6,1,4},要给这五个数进行从小到大的排序,也就是a[0]中要存放最小的,a[1]中存放次小的……那么我们考虑要实现五个数的按顺序排序,步骤应该是一个一个来的,也就是先考虑如何把五
8、个数中最小的放到a[0],定下一个最小的a[0]之后,再考虑把剩下四个数当中最小的放到a[1],如此类推,那么五个数我们要定四趟,每一趟定一个数,从a[0]定到a[3],那么最后当剩下一个数就不用再定了,那每一趟又是怎么定的呢?我们考虑要把五个数当中最小的放到a[0]中,那直接选择排序的算法思想是把a[0]跟后面的每一个数进行比较,也就是从a[1]一直比到a[4],如果有比a[0]小的那么就进行交换,这样就可以确保比完后a[0]中存放的是五个数当中最小的了,这是第一趟的思路,以此类推,定完a[0
此文档下载收益归作者所有