4. 數組和排序算法1
阿新 • • 發佈:2017-05-20
bottom ora ul li text tom file 數據 menu hit
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 初始化
-
動態初始化
數據類型[][] 數組名稱 = 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; //給第三行第三個元素賦值
-
靜態初始化
數據類型 [][] 數組名稱 = {{第一行元素},{第二行元素},...} ; 數據類型 [][] 數組名稱 = 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 冒泡排序(必須掌握)
4. 數組和排序算法1