100 likes | 187 Views
学习目标 掌握二维数组定义 掌握二维数组使用. 计算数组中的最大值和最小值. static void Main( ) { int[] nums=new int[]{99,-10,8,36,12,24,88,-9,105,100123}; int a=nums[0]; int b=nums[0]; for(int j=1;j<nums.Length;j++) {
E N D
学习目标 • 掌握二维数组定义 • 掌握二维数组使用
计算数组中的最大值和最小值 static void Main( ) { int[] nums=new int[]{99,-10,8,36,12,24,88,-9,105,100123}; int a=nums[0]; int b=nums[0]; for(int j=1;j<nums.Length;j++) { if(nums[j]<a) a=nums[j]; if(nums[j]>b) b=nums[j]; } Console.WriteLine(“a={0} b={1}”a , b); }
二维数组 • 二维数组的定义 • 二维数组的初始化 • 定义和初始化使用 [ , ] double [ , ] dArr; dArr=new double[ 3, 4 ] ; double [ , ] dArr=new double[ 3, 4 ] ; int [ , ] IArr=new int[ , ] {{1, 3}, {2, 4}, {5,6}};
操作实例:已知5个考生4门功课的考试成绩为:操作实例:已知5个考生4门功课的考试成绩为: 考生1 88 75 62 84 考生2 96 85 75 92 考生3 68 63 72 78 考生4 95 89 76 98 考生5 76 65 72 63 求每位考生的平均成绩。
static void Main( ) { int [ ] Ave=new int[5]; //定义一个一维数组存储考生的总成绩 int [ , ] grade={{88,75,62,84},{96,85,75,92}, //定义二维数组存储考生成绩 {68,63,72,78},{95,89,76,98}, {76,65,72,63}}; for(int i=0; i<5; i++) { for(int j=0; j<4; j++) { Ave[i]+=grade[ i , j ]; //累加考生成绩 } } for(int k=0;k<10;k++) { Console.WriteLine(“考生{0}平均成绩={1} ”,k+1, Ave[k]/4.0); } }
操作实例: 在二维数组a中选出各行最大的元素组成一个一维数组b。 a= (3 16 87 65 4 32 11 108 10 25 12 37) b= (87 108 37)
冒泡排序 冒泡排序: 第一轮:比较了4次 第二轮:比较了3次 16 9 25 16 9 9 23 25 23 25 90 90 23 第三轮:比较了2次 第四轮:比较了1次 每次比较相邻两数 小的交换到前面 每轮结束后最大的数交换到最后
用二重循环实现冒泡排序 • 如何用二重循环将5个数字排序?N = 5 • 5个数字存放在一维数组中 • 外层循环控制比较多少轮,循环变量 i • 内层循环控制每轮比较多少次,循环变量 j 内层循环 外层循环 循环4次:j < 4 第一轮:比较了4次 i = 0 第二轮:比较了3次 循环3次:j < 3 i = 1 j < ? i < 4 i = 2 循环2次:j < 2 第三轮:比较了2次 第四轮:比较了1次 循环1次:j < 1 i = 3 i < N-1 j < N-1-i j < 4-i
用二重循环实现冒泡排序 • 代码框架: • 冒泡排序速记口诀(升序): • N 个数字来排队 • 两两相比小靠前 • 外层循环 N-1 • 内层循环 N-1-i for (i = 0; i < N-1 ; i++) { for (j = 0; j < N-1-i; j++) { // 比较j 和j+1 位置的元素 // 如果前大后小就交换 } } 示例:将5个学员成绩排序
冒泡排序 • 关键代码分析: for (i = 0; i < scores.Length -1 ; i++) { for (j = 0; j < scores.Length -1 - i; j++) { if (scores[j] > scores[j + 1]) { // 交换元素 temp = scores[j]; scores[j] = scores[j + 1]; scores[j + 1] = temp; } } } 外层循环终止条件:数组长度-1 内层循环终止条件: 数组长度 – 1 - i 经过一轮比较交换, 最大的元素换到了最后面