`
打酱油的小瓶子
  • 浏览: 8117 次
最近访客 更多访客>>
lso
社区版块
存档分类

数组总结-排序以及最大值查找

    博客分类:
  • java
阅读更多

       数组是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语言实现数组元素最大值/最小值查找、数组元素平均值计算、数组元素排序等功能

    利用C语言可以实现对数组的各种操作,如输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在、给数组元素排序等功能。本压缩文件中是上述功能对应的...

    排序,查找,取最大值,反转-----数组.txt

    数组冒泡排序,选择排序,折半查找,取最大值,反转,打印数组

    已排序数组三分搜索法的研究

    已排序数组三分搜索法的研究

    查找序列(数组)中的最大值,最小值(例子)

    查找序列(数组)中的最大值,最小值(无论是Int,double......通用例子)本人测试通过!

    java代码-日常练习23,取数组的最小值、最大值、排序及二分查找法

    java代码-日常练习23,取数组的最小值、最大值、排序及二分查找法

    C语言归并、选择、直接插入、希尔、冒泡、快速、堆排序与顺序、二分查找排序.rar

    C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...

    leetcode二维数组-segment-tree:段树

    leetcode二维数组为什么要分段树? 也称为区间树 也称为锦标赛树 用于运行范围总和查询 即给定范围内所有数字的总和 Prefix ...上的总和/最小值/最大值,如以及修改单个矩阵元素的查询(即 M[x] [y] = p

    leetcode中国-challenge-450:450个基本的竞争性编程问题

    个”最大值和最小值元素 - [x] 数组 给定一个只包含 0、1 和 2 的数组。在不使用任何排序算法的情况下对数组进行排序 - [ ] 大批 将所有负元素移动到数组的一侧 - [ ] 大批 找出两个已排序数组的并集和交集。 - [ ] ...

    Java常用ArrayUtile工具类

    查找数组中的最大元素 查找数组中的最小元素 对数组进行排序 计算数组的中位数 计算数组的众数 计算数组的平均值 判断数组是否为严格递增 计算二维数组中所有元素的和 旋转二维数组90度 寻找目标数组是否为原数组的...

    C语言实验五 数组(1).zip

    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 指针...

    java 实现数组的增删改查

    对一维数组进行增删改查:int[] num = new int[10]; 要求:用方法实现 1.输入10个整数 2.删除指定位置上的数 3.修改指定位置上的数 4.查找某个数的位置(下标) 5.查找最大值 6.查找最小值 7.对数组进行排序

    计算机二级公共基础知识

    在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。 完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只...

    c++ 面试题 总结

    ==strcpy拷贝的结束标志是查找字符串中的\0 因此如果字符串中没有遇到\0的话 会一直复制,直到遇到\0,上面的123都因此产生越界的情况 建议使用 strncpy 和 memcpy ---------------------------------------------...

    leetcode二维数组-programming_exercises:leetcode、nowcoder刷题之路

    排序算法总结 面试编程题... 剑指Offer编程题目录 二维数组中的查找: 替换空格: 从尾到头打印链表: 重建二叉树: 用两个栈来实现队列: 旋转数组的最小数字: 斐波那契数列: 跳台阶: 跳台阶2: 矩形覆盖: 二进制中1的...

    C#,入门教程与实操,非常具有参考价值的数组算法完整工程源代码,包括:加强版(实数)数组;加强版(整数)数组;加强版(泛型)数组

    指定长度的构造函数;以 x 为样板的构造函数;以数组 v 为数据的构造函数;...和值查找表;构建和值稀疏表;稀疏查表法求 low high 之间的最小值;转为 M x N 的矩阵;ToString函数的重写;CompareTo比较器;

    算法实验,查找,排序,输出

    2、 能够人工输入或随机产生一个长度为 n 的整数数组,要求数组任意两个元素都互不相同;...7、 给定先升后降(或先降后升)数组,使用二分检索思路查找该数组的最大值(或最小值),并统计关键字比较的次数。

    shuzu_数组_

    本程序对对给定的一维数组进行求最大值、最小值、和、平均值、排序、二分查找、有序插入等操作,而且可以从文本文件中读取有效数据进行处理。

    lrucacheleetcode-Algorithms:算法

    两个值之和 - , 链表 反转单向链表 - , 从链表中删除重复项 - , 删除具有给定键的节点 - 链表的插入排序 - , 两个列表的交点 - , 从最后一个节点开始的第 N 个 - 用头交换第 N 个节点 - 合并两个排序链表 - 归并排序...

Global site tag (gtag.js) - Google Analytics