资源描述:
《新编C语言程序设计教程 教学课件 作者 钱雪忠★★★《新编C语言程序设计教程》课件3 数组常用操作.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数组常规操作数组的常规操作:排序插入修改删除查找用冒泡排序法对数组进行增序(从小到大)的排序排序的规则有两种:一种是增序(从小到大);另一种是降序(从大到小)冒泡排序法是常见的排序算法,它模拟水中气泡的排放规则,使重量“较轻”(值较小)的气泡浮到上面,重量“较重”(值较大)的气泡沉到下面,对每一趟排序,从第1个元素开始,比较相邻元素的大小,按照规则对调两者的位置,最终确定一个最大(或最小)的气泡的位置。请看对6个数进行冒泡排序法的过程:9854208954208594208549208542908
2、54209大数沉淀,小数起泡a[0]a[1]a[2]a[3]a[4]a[5]for(i=0;i<=4;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}第1趟排序854209584209548209542809542089a[0]a[1]a[2]a[3]a[4]a[5]for(i=0;i<=3;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}第2趟排序542089452089425089420589a[
3、0]a[1]a[2]a[3]a[4]a[5]for(i=0;i<=2;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}第3趟排序420589240589204589a[0]a[1]a[2]a[3]a[4]a[5]for(i=0;i<=1;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}第4趟排序204589024589a[0]a[1]a[2]a[3]a[4]a[5]for(i=0;i<=0;i++)i
4、f(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}第5趟排序for(i=0;i<=4;i++)if(a[i]>a[i+1]){……}for(i=0;i<=3;i++)if(a[i]>a[i+1]){……}for(i=0;i<=0;i++)if(a[i]>a[i+1]){……}……for(i=0;i<=6-pass-1;i++)if(a[i]>a[i+1]){……}for(pass=1;pass<=5;j++)pass:趟数从1到5size个元素时pass:趟数从
5、1到size-1i从0到size-pass-16个元素时pass=1pass=2pass=5voidbubblesort(intvalues[],intsize){intpass,j,temp;for(pass=1;pass<=size-1;pass++){for(j=0;j<=size-1-pass;j++)if(values[j]>values[j+1]){temp=values[j];values[j]=values[j+1];values[j+1]=temp;}}}将冒泡排序法定义为一函数将
6、冒泡排序法定义为一函数bubbleSort(intvalues[],intn):形参是待排序的一维数组和一维数组元素的个数。等同于bubbleSort(int*values,intn)形参定义为intvalues[]或int*values,是一维数组指针,对应的实参可为任意的一维数组名。形参定义为intvalues[len1],则对应的实参是长度为len1的一维数组名。将打印一维数组功能定义为一函数。voidprint(intvalues[],intsize){inti;for(i=0;i7、;i++)printf("%4",values[i]);printf("");}voidmain(){intscore1[]={10,3,56,89,80,60};intscore2[]={78,100,45,12,78,90,3,5};bubblesort(score1,6);print(score1,6);bubblesort(score2,8);print(score2,8);}31056608089351245787880100用选择法排序用选择法对数组中10个整数按由小到大排序。解题思
8、路:所谓选择法就是先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换……每比较一轮,找出一个未经排序的数中最小的一个共比较9轮a[0]a[1]a[2]a[3]a[4]3619416394136941349613469小到大排序#includeintmain(){voidsort(intarray[],intn);inta[10],i;printf("enterarray:");for(i=0;i<10;i++)s