控制结构、数组、排序和查找

控制结构、数组、排序和查找

控制结构

顺序结构

程序按从上至下的顺序逐句执行

选择结构

if-else

switch(case)

  1. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符char,而常量是int

  2. switch(表达式)中表达式的返回值必须是︰(byte,short,int, char,enum[枚举],String)没有double类型

  3. case子句中的值必须是常量,而不能是变量

  4. break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾或者下一个break

循环结构

for

  1. 循环条件是返回一个布尔值的表达式

  2. for初始化和变量迭代可以写到其它地方,但是两个分号不能省略

  3. 可以有多条初始化语句,但要求类型一样,中间用逗号隔开,

  4. 循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

增强for循环

for(数据类型 数据名:数组)

 for (Season2 season2 : val)//将val数组中的元素按顺序赋给season2

while

do-while

while和do..while区别 ——while先判断再执行,do..while先执行再判断

break & continue&return

break终止当前循环

continue直接进行下次循环

return使用在方法,表示跳出所在的方法,如果return写在main方法,退出程序

数组

  1. 数组也是一种数据类型,是引用类型(对象)

  2. 数组名.length可以得到数组的长度

  3. 数组的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

    当数组只初始化没有赋值时,其元素默认值:0(数字类型) , null(String) , false(boolean) , \u0000(char)

一维数组

创建方法:

 int[] a = new int[9];//1. 同时声明并创建
 int[] a;   a = new int[10];//2. 先声明之后创建
 double[] hens = {3 , 5 , 1 , 3.4 , 2 , 50};//3. 静态初始化
  1. 数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值

 int[]arr1 = {1,2,3};
 int[] arr2 = arr1;//把arr1地址赋给arr2,arr2变化会影响到arr1

二维数组

 //1.静态初始化
 int[][] arr = {
        {0, 0, 0, 0, 0, 0},
        {0, 0, 1, 0, 0, 0},
        {0, 2, 0, 3, 0, 0},
        {0, 0, 0, 0, 0, 0}};
 //arr.length这个二维数组包含多少个元素(一维数组)
 //arr[i].length第i个一维数组的长度
 
 //2.动态初始化,该二维数组包括2个一维数组,每个一维数组5个元素
 int[][] arr2 = new int[2][5];//[i][j]表示i行j列
 //可以先声明,int[][] arr2; arr2=new int[2][5];
 
 //3.动态初始化-列数不确定
 // 创建如下数组 1
 //           2 2
 //           3 3 3
 int[][] arr3 = new int[3][];
 for (int i = 1 ; i < arr3.length ; i++ ){
     arr[i] = new int[i + 1];//给每个一维数组初始化,如果没有这一步就没给一维数组赋值
 }

引用类型的地址传递与二维数组内存分配

 

多维数组同样,前面存放地址,最后一层存储数据

 

排序

排序的分类

内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序(交换式排序法、选择式排序法和插入式排序法)

外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序(合并排序法和直接合并排序法)

冒泡排序

时间复杂度:O(n2)

查找

常用的查找有两种

  1. 顺序查找

  2. 二分查找【二分法】前提:数组必须是有序的

posted @ 2021-10-19 00:02  时-  阅读(43)  评论(0)    收藏  举报