数组的定义、格式、初始化以及相关操作和源码(数组遍历、数组逆序、求最大/最小值、基本查找、高级排序:冒泡)
2020-07-21 22:49
246 查看
一.数组静态初始化 – 格式
*指定的元素内容,系统默认长度. *格式: **标准格式: 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...}; 数据类型 数组名称[] = new 数据类型[]{元素1,元素2,...}; **简写格式: 数据类型[] 数组名称 = {元素1,元素2,...}; 数据类型 数组名称[] = {元素1,元素2,...};
二.数组异常
*数组角标越界异常java.lang.ArrayIndexOutOfBoundsException: 出现原因:访问了数组中不存在的角标值! 解决方案:更改角标在范围之内. *空指针异常java.lang.NullPointerException **出现原因:代码结构不严谨(某个对象已经为空) **解决方案:需要给该对象进行非空判断!
三.数组的应用(一维数组)
1)遍历
*将数组中元素一一打印输出出来. *数组中提供属性:length(获取数组中的长度)(数组名.length)
2)求最大/最小值
/* 数组求最大值,最小值 分析: 1)定义数组,静态初始化 2)定义一个参照物,数组中的第一个元素(它就是一个最大值) 3)从角标1遍历后面的元素,获取到每一个元素 判断: 如果后面的元素都大于max了, 将该元素赋值max 4)输出max值 */ import java.util.Scanner; class MaxMinDemo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入数组长度 : "); int length = sc.nextInt(); int[] arr = new int[length] ; System.out.println("请输入数元素 : "); for(int i = 0; i < arr.length ; i ++){ arr[i] = sc.nextInt(); } int max = max1(arr); int min = min1(arr); System.out.println("数组中最大值为 : " + max + "最小值为 : " + min); } public static int max1(int[] array){ int max = array[0]; for(int i = 1; i < array.length ; i++){ if(max < array[i]){ max = array[i] ; } } return max; } public static int min1(int[] array){ int min = array[0]; for(int i = 1; i < array.length ; i++){ if(min > array[i]){ min = array[i] ; } } return min; } }
3)数组逆序
/* 数组逆序. */ import java.util.Scanner; class ArrayDemo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("输入数组长度 : "); int len = sc.nextInt(); int array[] = new int[len]; System.out.println("请输入数组元素 : "); for(int i =0; i < array.length ; i++){ array[i] = sc.nextInt(); } revser(array); arrayArr(array); } public static void revser(int[] array){ int num = 0; int n = array.length - 1; for(int x =0; x < array.length ; x++){ if(n<x){ break; } num = array[x]; array[x] = array ; array = num; n--; } } public static void arrayArr(int[] array){ for(int y = 0;y < array.length ; y++){ System.out.print(array[y] + "\t"); } } }
4)数组基本元素查找
*通过数组的角标值确定内容. *从数组中的开始索引一直查询到末尾,查询出元素第一次在数组中的索引值. 数组的基本查找法:(数组的元素内容可以无序) *从数组中的开始索引一直查询到末尾,查询出元素第一次在数组中的索引值 **数组的高级查找:二分搜索法(折半查找): 前提条件:数组的元素必须有序!
5)数组高级排序:冒泡
*冒泡思想:两两比较,将较大的值往后放,第一次比较完毕,最大值出现在 最大索引处,依次这样比较... *规律:两两比较,将较大的值往后放总共比较的次数:数组长度-1次 *代码:/* 冒泡排序,二撸代码 */ import java.util.Scanner; class BubblingDemo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入数组长度 : "); int length = sc.nextInt(); int[] arr = new int[length]; System.out.println("请依次输入数组元素 : "); for(int i = 0 ; i < arr.length; i++){ arr[i] = sc.nextInt(); } ergodic(arr);//冒泡之前进行数组遍历 bubbling(arr);//调用冒泡算法 System.out.println(); ergodic(arr);//冒泡之后进行数组遍历 } //方法实现冒泡排序 public static void bubbling(int[] arr){ int num = 0; for(int i = 0;i < arr.length - 1;i ++){ for(int j = 0; j < arr.length - 1 - i; j ++){ if(arr[j] > arr[j + 1]){ num = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = num; } } } } //数组遍历 public static void ergodic(int[] arr){ System.out.print("[ "); for(int i = 0; i < arr.length ; i ++){ System.out.print(arr[i] + ", "); } System.out.print("]"); } }
6)面试题
*数组中有没有length属性,字符串中有没有length属性,集合中有没有length属性: **数组中有length属性 **字符串中没有length属性:String类中有:length(); **集合中没有length属性:集合中:size();
四.二维数组(了解)
1)概念
就是一个元素为一维数组的数组
2)定义格式
数据类型[] 数组名称[]; 数据类型[][] 数组名称;
3)动态初始化
格式一: 数据类型[][] 数组名称 = new 数据类型[m] ; 格式二: **数据类型[][] 数组名称 = new 数据类型[m][]; **指定了一维数组的个数,一维数组的长度需要动态给定.
4)静态初始化
格式三: **数据类型[][] 数组名称 = new 数据类型[][]{{元素1,元素2,...},{元素1,元素2,...},...}; 简写格式: **数据类型[][] 数组名称 = {{元素1,元素2,...},{元素1,元素2,...},...};
5)二维数组的遍历
/* 二维数组的动态声明,赋值,遍历 */ import java.util.Scanner; class TwoDimensionalArrayDemo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入二维数组的行数 :" ); int m = sc.nextInt(); System.out.println("请输入二维数组的列数 :" ); int n = sc.nextInt(); int array[][] = new int[m] ; //数组动态初始化 for(int i = 0;i < array.length;i ++){//使用for循环嵌套输入二维数组元素 for(int j = 0;j < array[i].length;j ++){ array[i][j] = sc.nextInt(); } } System.out.println("遍历数组进行输出 : "); for(int x =0;x < array.length;x ++){ for(int y = 0;y < array[x].length;y ++){//使用for循环嵌套对二维数组进行遍历 System.out.print(array[x][y] + "\t"); } System.out.println(); } } }
相关文章推荐
- 二叉搜索树的相关操作:插入节点,删除节点,排序,查找,最大值,最小值,前序,中序,后序遍历(主要用到递归的方法)
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- Java算法——一维数组的常见操作(遍历,求最大值,最小值,逆序,查找)
- 单链表的基本操作(初始化,建表,遍历,增加,删除,查找,逆序)等操作
- ArrayTool是一个定义了操作数组常用的工具类,比如求最大值,排序,查找
- 数据结构之顺序表增、删、查找、初始化以及顺序表输出基本相关操作
- Java基本功练习五(一维数组相关操作[声明、创建、乱序、排序、查找]和方法的重载举例[浅议])
- Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作
- JavaScript遍历查找数组中最大值与最小值的方法示例
- Java数组概述、定义格式说明、初始化、内存分配及常见操作
- 二维数组的定义(动态初始化、静态初始化)、初始化格式及其操作、java中的参数传递方式,面向对象的基本概念
- 数组基本算法(最大值,最小值,总和,平均数,复制,反转,排序)
- 查找二叉树的基本操作以及层次遍历
- linux shell 数组的定义以及基本操作
- 数组 获取最值(最大值 最小值)选择排序 冒泡排序 快速排序 半查找(二分查找) 十进制转其他进制法
- 排序二叉树BST的基本操作(1)插入,查找,最大,最小
- NO4.java学习笔记(数组、数组的操作【遍历、排序、查找】)
- 数组的遍历,获取最大值,数组的反转,数组中元素的查找、冒泡排序、选择排序、折半查找法
- Java重修之路(五)数组基本概念,存储方式,遍历,排序,查找,多维数组
- 单向链表的相关操作总结:创建、删除、查找、排序、统计链表大小、链表的反转和遍历等