黑马程序员—数组

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、一维数组

概念
同一种类型的集合。其实就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度]
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……}

二、二维数组

格式
int[][] arr = new int[3][4];
1,定义了名称为arr的二维数组
2,二维数组中有3个一维数组
3,每个一维数组中有2个元素
4,一维数组的名称分别为arr[0],arr[1],arr[2]

提示:定义数组时必须给出数组的长度,而且数组一旦被创建,就不允许在增加他的空间。

代码示例:

数组的应用之选择排序:

/*
选择排序:
需求:将一个数组按从小到大的顺序排列并输出
思路:
1,将第一个数与其之后的每一个数进行比较,遇到较小的数,将两者的位置调换
2,重复上述步骤,将之后的数据也进行处理
3,输出排序前的排序后的数组进行比较
*/
class Sorting1
{
	//定义选择排序方法
	public static void ChoiceSort(int[] a)	
	{
		int temp = 0;
		//输出数组排序前的状态
		System.out.print("选择排序前:");
		for(int x = 0; x<a.length ;x++)		
			System.out.print(a[x]+" ");
		System.out.println();
		//进行排序处理
		for(int x = 0; x<a.length ;x++)
			for(int y = 0; y<a.length ;y++)
			{
				if(a[x]<a[y])
				{
					temp = a[x];
					a[x] = a[y];
					a[y] = temp;
				}
			}
		//输出数组排序后的状态
		System.out.print("选择排序后:");
		for(int x = 0; x<a.length ;x++)		
			System.out.print(a[x]+" ");
		System.out.println();
	}
	public static void main(String[] args)
	{
		int[] arr={4,7,3,10,2,15,5};
		//调用选择排序方法
		ChoiceSort(arr);	
	}
}
/*
最终运行结果:
选择排序前:4 7 3 10 2 15 5
选择排序后:2 3 4 5 7 10 15
*/
冒泡排序:

/*
冒泡排序:
需求:将一个数组按从小到大的顺序排列并输出
思路:
1,将第一个数与其后的一个数进行比较,如果第一个数大于第二个数,将两者的位置调换
2,重复上述步骤,将之后的数据也进行处理
3,输出排序前的排序后的数组进行比较
*/
class Sorting2
{
	//定义冒泡排序放方法
	public static void BubbSort(int[] a)
	{
		int temp = 0;
		//输出冒泡排序前状态
		System.out.print("冒泡排序前:");
		for(int x = 0; x<a.length ;x++)
			System.out.print(a[x]+" ");
		System.out.println();
		//进行排序处理
		for(int y = 0; y<a.length-1 ;y++)
			for(int x = 0; x<a.length-1 ;x++)
				{
					if(a[x]>a[x+1])
					{
						temp = a[x];
						a[x] = a[x+1];
						a[x+1] = temp;
					}
				}
		//输出冒泡排序后的数组状态
		System.out.print("冒泡排序后:");
		for(int x = 0; x<a.length ;x++)
			System.out.print(a[x]+" ");
		System.out.println();
	}
	public static void main(String[] args)
	{
		int[] arr={4,7,3,10,2,15,5};
		//调用冒泡排序方法
		BubbSort(arr);
	}
}
/*
最终运行结果:
冒泡排序前:4 7 3 10 2 15 5
冒泡排序后:2 3 4 5 7 10 15
*/

查表法进制转换:

/*
查表法将十进制转换为二进制、八进制、十六进制
*/
class  ArrayTest
{
	public static void main(String[] args) 
	{
		
		toBin(60);

		toOct(60);

		toHex(-60);
	}

	//转换为二进制
	public static void toBin(int num)
	{
		conversion(num,1,1);
	}

	//转换为八进制
	public static void toOct(int num)
	{
		conversion(num,7,3);
	}

	//转换为十六进制
	public static void toHex(int num)
	{
		conversion(num,15,4);
	}
	//转换
	public static void conversion(int num,int diwei,int yiwei)
	{
		//如果num等于0,结果输出为0
		if(num==0)
		{
			System.out.println("num="+0);
			return;
		}
		//定义一个包含二进制、八进制、十六进制的表
		char[] chs={'0','1','2','3',
					'4','5','6','7',
					'8','9','A','B',
					'C','D','E','F',};

		//定义一个临时容器
		char[] arr=new char[32];

		//定义一个操作数组的指针
		int pos=arr.length;

		//利用与低位最大值的方式取出低位,存到临时数组中
		while(num!=0)
		{
			arr[--pos]=chs[num&diwei];//--pos倒着往临时容器里存
			num >>>=yiwei; //无条件右移相应位数
		}
		
		//打印转换后的结果
		for(int x=pos;x<arr.length; x++)
			System.out.print(arr[x]);
		
		//换行
		System.out.println();
	}
}
/*
最终运行结果:
111100
74
FFFFFFC4
*/

小练习一个:

验证哥德巴赫猜想

/*
小练习
需求:验证哥德巴赫猜想;任何大于6的偶数可以表示为两个素数的和
思路:
1,首先求出该偶数可能为两个数之和的所有情况
2,判断每种情况下两数是否都为素数(素数是只有1和他自己本身的约数的数)
3,返回两数的值
思路:
1,定义一个方法guess
2,采用for循环求出所有的可能情况
3,定义一个判断素数的方法(对小于自己的任何数取模都不为0)
4,返回结果return x,y;
*/
class GDBH
{
	//定义素数判断方法
	static boolean sushu(int a)
	{
		for(int m = 2; m<a ;m++)
			if(a%m==0)
				return false;
		return true;
	}
	//定义验证哥德巴赫猜想方法
	static void guess(int a)
	{
		int x,y;
		for(x = 3; x<a ;x++)
			for(y = 3; y<a ;y++)
				if(x+y==a)
					if(sushu(x))
						if(sushu(y))
							System.out.println(a+"="+x+"+"+y);
	}
	public static void main(String[] args)
	{
		int num = 44;
		//调用方法
		guess(num);
	}
}
/*
最终运行结果:
44=3+41
44=7+37
44=13+31
44=31+13
44=37+7
44=41+3
*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值