资源描述:
《C#新课件第四讲》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C#编程第四讲:冒泡排序、二维数组本章内容冒泡排序二维数组一、冒泡排序数组排序开发中经常会用到排序比如:整型数组从小到大排序;学生姓名按升序排列等等。常见的排序方法很多:比如:冒泡排序、选择排序、插入排序、归并排序等等。冒泡排序冒泡排序是比较常见的排序算法。因为其原理跟水底气泡上升至水面很相似而得名。冒泡排序涉及到双循环,外层循环控制趟数,内层循环控制比较次数。冒泡排序2020202020202090901313131313131390888888888888889011111119015151515151515904040404040404090
2、冒泡排序冒泡排序算法的运作如下:(从后往前)1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序for(inti=0;inums[j+1]){inttemp=nums[j];nums[j
3、]=nums[j+1];nums[j+1]=temp;}}}练习2用冒泡排序法排列数组下列数组并打印排序号的数组:float[]arr={12,90,14,84,34,9,23,55,10.5,8}二、二维数组二维数组有两个下标的数组称为二维数组二维数组的定义:类型[常量表达式1,常量表达式2]数组名;第一维的长度第二维的长度二维数组例如:int[,]a={{7,6,3},{2,8,5}};定义a是一个2行3列的整型数组。37632285二维数组元素二维数组的元素也称为双下标变量。数组名[下标1,下标2]0120a[0,0]a[0,1]a[0
4、,2]1a[1,0]a[1,1]a[1,2]二维数组初始化publicstaticvoidMain(string[]args){//第一种动态初始化int[,]array=newint[2,3]{{1,2,3},{1,2,3}};//第二种动态初始化int[,]map=newint[,]{{1,2,3},{4,5,6}};//静态初始化int[,]gameMap={{2,3},{3,5}};}练习11、将一个二维数组的行和列交换,存储到另外一个数组中去。2、有一个3行4列的二维数组,要求编程找出最大元素,并输出所在的行和列。二维数组用途1、游戏地图
5、(1表示此处是障碍物,0表示此处可以通过。)2、电影院购票(1表示此位置票已经卖过,0表示此位置还有票)注意事项二维数组静态初始化定义时,第一维的个数可以是任意的,但是第二维的个数必须相同,例如下面的写法会出现编译错误:int[,]gameMap={{2,3},{3,5,7}};练习2编写一个程序定义二维数组arr,该数组一共四行三列,如下表表示,请把下表中所有对应数据利用赋值到该二维数组arr中去:按以下要求编写程序:180271(1)利用循环显示第0行的所有元素;91139201234492(2)利用循环求第2行所有元素的和。218714补充f
6、oreach循环C#的foreach循环语句用于对数组、字符串及集合类型foreach循环语句格式:foreach(迭代类型迭代变量名in数组名){//foreach循环语句循环体}foreach循环publicstaticvoidMain(string[]args){int[]a={1,2,3,4,5,6,7};foreach(intxina){//可以快速遍历一维数组Console.WriteLine(x);}int[,]map={{1,2,3},{4,5,6}};foreach(intxinmap){//也可以快速遍历二维数组//注意:迭代变
7、量x是只读的,不允许修改//x++;此时会出现编译错误Console.WriteLine(x);}}练习31、int[]intArr={1,2,3,4,5};用foreach遍历数组,求其元素之积。2、stringstr=“Hello,lanou!”;用foreach遍历字符串,求字符串中包含几个’l’字符。总结冒泡排序(要求:1分半内敲出冒泡排序,并输出)掌握二维数组的定义、初始化以及使用下节内容结构体