JAVA进阶版:二维数组

(1) 二维数组静态初始化

package javase.jingjie.二维数组;
/**
 * 1.二维数组是一个特殊的一维数组。
 * 2.特殊的一维数组,特殊在这个一维数组中每一个元素都是“一维数组”
 * */
public class ErShuZu01 {
	public static void main(String[] args) {
		// 静态初始化二维数组
		int [] [] a= {
				{1,2,3},
				{45,34},
				{0},
				{10,23,85,99},
		};
		//以上这个数组有多少个一维数组
		System.out.println(a.length+"个一维数组");
		
		//获取第一个一维数组
		int [] a0=a[0];
		int a00=a0[0];
		System.out.println(a00);
		
		//获取第一个一维数组的第一个元素
		System.out.println(a[0][0]);
		//获取最后一个一维数组中最后的一个元素
		System.out.println(a[3][3]);
		System.out.println(a[a.length-1][a[a.length-1].length-1]);
		
		//遍历二维数组,纵向循环在外
		for(int i=0;i<a.length;i++) {
			//对一维数组a[i]进行遍历
			for(int j=0;j<a[i].length;j++) {
				System.out.println(a[i][j]+"");
			}
			System.out.println();
		}
	}
}

(2) 二维数组的动态初始化

package javase.jingjie.二维数组;
/**
 * 关于二维数组的动态初始化
 * */
public class ErShuZu02 {

	public static void main(String[] args) {
		// 3个一维数组
		//每个一维数组中有4个元素
		int[][] a=new int[3][4];
		//遍历
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				System.out.print(a[i][j]+"");
			}
			System.out.println();
		}
	}
}

(3)方法传递数组

package javase.jingjie.二维数组;
public class ErShuZu03 {
	public static void main(String[] args) {
		m1(new int[][] {{1,23,4},{5,6,7,8},{10,9}});
	}
	public static void m1(int[][] a) {
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				System.out.println(a[i][j]+"");
			}
			System.out.println();
		}
	}
}

(4) 案例

package javase.jingjie.二维数组;
public class ErShuZu04 {
	String no;
	String type;//标准间,双人间,豪华间
	boolean isUse;//true表示占用,false表示空闲
}
class Hotel{
	//规定酒店:5层,每层10个房间
	//1,2层表示标准间;3,4层表示双人间;5是豪华间
	ErShuZu04[][] rooms;
	//无参数
	Hotel(){
		this(5,10);
	}
	public Hotel(int rows,int cols) {
		rooms=new ErShuZu04[rows][cols];	
	}
}

(5)二分法

package javase.jingjie.二维数组;
/**
 * 二分法查找
 * */
public class 二分法 {
	public static void main(String[] args) {
		int [] a= {1,3,4,5,7,8,9,10,23,25,29};
		int destElement=10;
		
		//要求从a数组中查找10这个元素下标
		int index=A(a,destElement);//如果找到则返回元素的下标,找不到统一返回-1
		
		System.out.println((destElement==-1)?destElement+"元素不存在":destElement+"在数组中的下标是:"+index);
		
	}
	//折半查找的核心算法
	public static int A(int[] a,int destElement) {
		int begin =0;
		int end=a.length-1;
		 while (begin<=end) {
			 int mid=(begin+end)/2;
			 if(a[mid]==destElement) {
				 return mid;
			 }else if(a[mid]>destElement) {
				 end=mid-1;
			 }else if(a[mid]<destElement) {
				 begin= mid+1;
			 }
		 }
		 return -1;
	}
}

(6) 冒泡

package javase.jingjie.二维数组;
/**
 * 冒泡法排序:int类型的数组:3 1 6 2 5
 * */
public class 冒泡 {
	public static void main(String[] args) {
		int [] a= {3,1,6,2,5};
		
		//开始排序
		for(int i=a.length-1;i>0;i--) {
			for(int j=0;j<i;j++) {
				if(a[j]>a[j+1]) {
					//交换位置
					int temp;
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		//遍历
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	}
}

(7) 选择排序

package javase.jingjie.二维数组;
/**
 * 选择排序:3,1,6,2,5
 * 算法:找出最小值,然后最小值和最前面的数据交换位置
 * */
public class 选择排序 {
	public static void main(String[] args) {
		int [] a= {3,1,6,2,5};
		//选择排序
		for (int i=0;i<a.length-1;i++) {
			//假设第一个数据是最小值,记录最小值元素的下标
			int min=i;
			for(int j=i;j<a.length;j++) {
				if (a[min]>a[j+1]) {
					//给min重新赋值
					min=j+1;
				}
			}
			//考虑交换位置
			if(min !=i) {
				int temp;
				temp=a[i];
				a[i]=a[min];
				a[min]=temp;
			}
		}
		//输出
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值