4. 数组和排序算法1

1. 数组的定义

一组相关变量的集合

一个数组实际上就是一连串的变量

数组中的变量必须是相同的数据类型

数组可以分为一维数组、二维数组和多维数组

例如:numbers[100]来代替直接声明100个独立变量number0,number1,....,number99


2. 一维数组

2.1 数组的声明

两种声明方式:

数据类型[] 数组名  //首选
数据类型 数组名[]  //效果相同,C语言的格式,不推荐

举例:

int[] myList    //推荐
int myList[]    //不推荐

2.2 数组的初始化

2.2.1 动态初始化

数组定义与为数组分配空间和赋值的操作分开进行

数组名 = new 数组类型[数组大小]

例如:

myList  = new int[10];

2.2.2 静态初始化

在定义数组的同时就为数组元素分配空间并赋值

数组名 = {元素1,元素2,元素3,….}

数组名 = 数组类型[]{元素1,元素2,元素3,….}

例如:

int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};

2.2.3 错误的初始化

int[] month_days = new int[12];
month_days = {31,28,31,30,31,30,31,31,30,31,30,31}; 

注意:只能在数组声明时用大括号对来自定义数据,否则只能分别对每个下标元素进行赋值

int[] month_days = new int[12];
month_days[0] = 31;
month_days[1] = 28;
    ……  

2.3 一维数组练习和实践

1、数组名表示什么?

2、arr[0]表示什么?

3、怎么获取数组长度?

4、如何使用数组下标取值?

5、如何使用数组遍历取值 for & foreach ?

6、如何给数组所有元素求和?

7、如何找出数组种最大值,最小值?

8、数组的深复制,浅复制有何不同?

9、练习:一个班有10个同学的数学成绩需要记录,要计算班级成绩总和,平均成绩,最高分,最低分,及格人数等数据。

    int[] studentScores = { 55, 66, 77, 88, 35, 89, 90, 52, 22, 76 };

    int studentScores[] = { 55, 66, 77, 88, 35, 89, 90, 52, 22, 76 };

3. 二位数组

3.1 声明与初始化

3.1.1 声明

int[][] a;  //推荐
int a[][];  //不推荐   

3.1.2 初始化

  1. 动态初始化

    数据类型[][] 数组名称 = new 数据类型 [行数][列数] ;
    

    例如:

    int [][] num = new int [3][3]; //定义了三行三列的二维数组  
    num[0][0] = 1; //给第一行第一个元素赋值  
    num[0][1] = 2; //给第一行第二个元素赋值  
    num[0][2] = 3; //给第一行第三个元素赋值  
    
    num[1][0] = 4; //给第二行第一个元素赋值  
    num[1][1] = 5; //给第二行第二个元素赋值  
    num[1][2] = 6; //给第二行第三个元素赋值  
    
    num[2][0] = 7; //给第三行第一个元素赋值  
    num[2][1] = 8; //给第三行第二个元素赋值  
    num[2][2] = 9; //给第三行第三个元素赋值 
    
  2. 静态初始化

    数据类型 [][] 数组名称 = {{第一行元素},{第二行元素},...} ;  
    数据类型 [][] 数组名称 = new 数组类型{{第一行元素},{第二行元素},...} ; 
    

    例如:

    int[][] num = {{1,2,3},{4,5,6},{7,8,9}};
    int[][] num = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
    

二维数组其实就是矩阵

3.2 二维数组练习

案列:某校幼儿园有3个班,每个班有5个人,计算各班平均年龄?计算全园平均年龄?计算总人数?

    int students[][] = { { 3, 6, 4, 5, 4 }, { 2, 3, 5, 3, 2 }, { 3, 4, 6, 2, 4 } };

    int[][] students = { { 3, 6, 4, 5, 4 }, { 2, 3, 5, 3, 2 }, { 3, 4, 6, 2, 4 } };

4. 排序算法

4.1 冒泡排序(必须掌握)

 

posted @ 2017-05-20 19:47  Jeknight  阅读(337)  评论(0编辑  收藏  举报