数组是java中最基本的一种数据结构,它所占的是一块连续的存储空间。
数组既有优点又有缺点。它的优点在于:按照下标顺序或者直接指定的下标,访问读取的速度效率高于其他的数据结构。
而它的缺点则是:内存空间在定义的时候就固定了,不能改变其内存的大小。
java中有两种数据类型:1.基本数据类型;2.引用类型(对象类型,类类型)如:class,interface,abstract class,数组。
数组只有唯一的一个属性那就是length。
一维数组的定义方法基本是以下两种:
1.数据类型 [] 数组名 = new 数据类型[长度];
数据类型 [] 数组名 = {值,...};
2.数据类型 [] 数组名;
数组名 = new 数据类型[长度];
数据类型 [] 数组名;
数组名 = new 数据类型[]{值,...};
二维数组的定义方法基本是以下两种:
1.数据类型 [][] 数组名 = new 数据类型[行][列];
数据类型 [][] 数组名 = {{值,...},...};
2.数据类型 [][] 数组名;
数组名 = new 数据类型[行][列];
数据类型 [] 数组名;
数组名 = new 数据类型[][]{{值,...},...};
关于二维数组的各种长度的获取:
获取二维数组的总行数:数组名.length;
获取二维数组的每一行的列数:数组名[行下标].length;
获取二维数组总的元素个数:
获取某一个元素:数组名[行下标][列下标]
当在一个没有分配内存空间的空对象名字上调用对象的方法或属性,就会出现空指针异常,即定义了变量类型和变量的名字,但这个变量并没有指向一个具体存在的对象,那么这个变量的默认值是null,在调用时就会报错,此为空指针异常。
解决方法:注意new的使用。
package 多维数组; import java.util.Random; public class Array { /** * 主程序入口 */ public static void main(String[] args){ //实例化一个Array类对象 Array ay = new Array(); //取得要排序的原数组 int[] array = ay.creatArray(10); System.out.println("----排序前数组值的顺序:"); //打印数组各个元素值 ay.printArray(array); System.out.println("----数组排序后的结果:"); //调用插入法给数组排序 ay.charu(array); //打印数组各个元素值 ay.printArray(array); } /** * 生成一个乱序的,指定长度的原始数组 */ public static int[] creatArray(int size){ // 实例化一个int类型的数组对象 int[] array = new int[size]; // 实例化一个随机数类的对象 Random random = new Random(); //遍历数组,给数组每一个下标赋值 for(int i = 0; i<array.length; i++){ // 给数组赋上随机值 array[i] = random.nextInt(50); } return array; } /** * 用插入法给数组排序 */ public static int[] charu(int [] array){ for(int i = 1; i<array.length; i++){ for(int j = i; j>0; j--){ if(array[j]<array[j-1]){ int temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; } } } return array; } /** * 打印出数组中的元素值 */ public static void printArray(int[] array){ //如果要打印的数组为null,则不打印 if(array==null){ return; } //遍历数组输出每一个下标位置的元素 for(int i = 0; i<array.length; i++){ //输出信息 System.out.print(array[i]+"\t"); } System.out.println(); } }
运行结果:
----排序前数组值的顺序:
4 39 26 3 7 2 40 6 9 12
----数组排序后的结果:
2 3 4 6 7 9 12 26 39 40
package 多维数组; import java.util.Random; public class ArrayT { /** * 主程序入口 */ public static void main(String[] args) { //实例化一个ArrayT类对象 ArrayT at = new ArrayT(); //取得要排序的原数组 int[][] array = at.createArray(10, 10); //打印数组各个元素值 at.printArray(array); //找出最大值,并输出它的个数和位置 at.chazhao(array); } /** * 创建一个二维数组的方法 * @param row * @param column * @return */ public static int[][] createArray(int row, int column) { // 实例化一个int类型的数组对象 int[][] array = new int[row][column]; //实例化一个随机数类的对象 Random random = new Random(); // 遍历数组,给数组的每一个下标位置附上值。 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { // 给数组赋随机值 array[i][j] = random.nextInt(50); } } return array; } /** * 打印出数组中的元素值 */ public static void printArray(int[][] array) { // 遍历数组,输出每一个下标位置的元素 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { // 输出信息 System.out.print(array[i][j] + "\t"); } System.out.println(); } } /** * 找出最大值方法 */ public static void chazhao(int [][] array){ //查找最大值 int max = array[0][0],a1=0,a2=0,a3=0; //找出数组中的最大值 for(int i = 0; i<array.length; i++){ for(int j = 0; j<array[i].length; j++){ if(max<array[i][j]){ max=array[i][j]; } } } //判断数组中有多少个这样的最大值,并输出各个值的所在位置 for(int i = 0; i<array.length; i++){ for(int j = 0; j<array[i].length; j++){ if(max==array[i][j]){ a1=i+1; a2=j+1; a3++; System.out.println("最大值为:"+max+"位置在:"+a1+"行"+a2+"列"); } } } System.out.println("最大值共有个数为:"+a3); } }
运行结果:
14 41 4 27 9 10 48 46 19 10
46 39 49 5 25 12 13 15 14 27
34 6 3 11 27 21 26 36 18 46
43 11 25 9 28 16 14 7 10 45
16 20 44 23 12 14 32 33 32 7
13 4 3 6 26 4 6 43 32 3
25 17 46 9 0 2 27 7 49 39
26 5 26 32 49 33 34 20 47 41
35 41 24 47 12 17 26 0 13 16
41 26 26 43 27 23 26 13 39 15
最大值为:49位置在:2行3列
最大值为:49位置在:7行9列
最大值为:49位置在:8行5列
最大值共有个数为:3
相关推荐
利用C语言可以实现对数组的各种操作,如输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在、给数组元素排序等功能。本压缩文件中是上述功能对应的...
数组冒泡排序,选择排序,折半查找,取最大值,反转,打印数组
已排序数组三分搜索法的研究
查找序列(数组)中的最大值,最小值(无论是Int,double......通用例子)本人测试通过!
java代码-日常练习23,取数组的最小值、最大值、排序及二分查找法
C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...
leetcode二维数组为什么要分段树? 也称为区间树 也称为锦标赛树 用于运行范围总和查询 即给定范围内所有数字的总和 Prefix ...上的总和/最小值/最大值,如以及修改单个矩阵元素的查询(即 M[x] [y] = p
个”最大值和最小值元素 - [x] 数组 给定一个只包含 0、1 和 2 的数组。在不使用任何排序算法的情况下对数组进行排序 - [ ] 大批 将所有负元素移动到数组的一侧 - [ ] 大批 找出两个已排序数组的并集和交集。 - [ ] ...
查找数组中的最大元素 查找数组中的最小元素 对数组进行排序 计算数组的中位数 计算数组的众数 计算数组的平均值 判断数组是否为严格递增 计算二维数组中所有元素的和 旋转二维数组90度 寻找目标数组是否为原数组的...
2075-字符串排序(数组).txt 查找最大的字符(字符数组)xt 回文串(字符数组)xt ...数组的最大值及下标(数组).t 数组排序(数组).t 杨挥三角(数组)xt 字符串比较(数组)xt 字符串排序(数组)txt
:编写程序exp5_1.c,在主函数中定义一维数组int array[10],自定义以下函数:输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在(若存在,...
线段树维护区间最大值 Segment-Tree(Maximum) 线段树维护区间最小值 Segment-Tree(Minimum) 线段树维护区间和值 Segment-Tree(Sum) 普通的选择算法 Selection Eratosthenes素数筛法 Sieve-of-Erotosthenes 指针...
对一维数组进行增删改查:int[] num = new int[10]; 要求:用方法实现 1.输入10个整数 2.删除指定位置上的数 3.修改指定位置上的数 4.查找某个数的位置(下标) 5.查找最大值 6.查找最小值 7.对数组进行排序
在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。 完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只...
==strcpy拷贝的结束标志是查找字符串中的\0 因此如果字符串中没有遇到\0的话 会一直复制,直到遇到\0,上面的123都因此产生越界的情况 建议使用 strncpy 和 memcpy ---------------------------------------------...
排序算法总结 面试编程题... 剑指Offer编程题目录 二维数组中的查找: 替换空格: 从尾到头打印链表: 重建二叉树: 用两个栈来实现队列: 旋转数组的最小数字: 斐波那契数列: 跳台阶: 跳台阶2: 矩形覆盖: 二进制中1的...
指定长度的构造函数;以 x 为样板的构造函数;以数组 v 为数据的构造函数;...和值查找表;构建和值稀疏表;稀疏查表法求 low high 之间的最小值;转为 M x N 的矩阵;ToString函数的重写;CompareTo比较器;
2、 能够人工输入或随机产生一个长度为 n 的整数数组,要求数组任意两个元素都互不相同;...7、 给定先升后降(或先降后升)数组,使用二分检索思路查找该数组的最大值(或最小值),并统计关键字比较的次数。
本程序对对给定的一维数组进行求最大值、最小值、和、平均值、排序、二分查找、有序插入等操作,而且可以从文本文件中读取有效数据进行处理。
两个值之和 - , 链表 反转单向链表 - , 从链表中删除重复项 - , 删除具有给定键的节点 - 链表的插入排序 - , 两个列表的交点 - , 从最后一个节点开始的第 N 个 - 用头交换第 N 个节点 - 合并两个排序链表 - 归并排序...