`
_jia_shun
  • 浏览: 25231 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

_5_4_数组的基本操作

 
阅读更多
package _5_4_数组的基本操作;

public class _5_4_Example_1 {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//遍历一维数组
		System.out.println("遍历一维数组:");
		int month[]={31,28,31,30,31,30,31,31,30,31,30,31};
		for(int i=0;i<month.length;i++){
			System.out.println("第"+(i+1)+"月有"+month[i]+"天");
		}
		
		//遍历二维数组
		System.out.println("遍历二维数组:");
		int array[][]=new int[][]{{1,8,9},{4,3,5,6},{9,8}};
		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();
		}
		//使用foreach语句遍历数组
		for(int[] arr : array){
			for(int x : arr)
				System.out.print(x+"\t");
			System.out.println();
		}
	}

}

 

package _5_4_数组的基本操作;

import java.util.Arrays;

//填充替换数组元素

public class _5_4_Example_2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//fill(int []a,int value)将指定int型元素分配给int型数组的每个元素
		int a[]=new int[6];
		System.out.println("未赋值的数组:");
		for(int i=0;i<a.length;i++)
			System.out.print(a[i]+" ");
		Arrays.fill(a, 8);
		System.out.println("\n修改后的数组:");
		for(int i=0;i<a.length;i++)
			System.out.print(a[i]+" ");
		
		//包括起点不包括终点的替换
		//fill(int []a,int fromIndex,int toIndex,val)
		Arrays.fill(a, 1, 4, 15);
		System.out.println("\n修改后的数组:");
		for(int i=0;i<a.length;i++)
			System.out.print(a[i]+" ");
		
		//对数组进行排序
		int arr[]={34,4,13,76,6,9,790,89};
		System.out.println("\n\n原数组:");
		for(int i=0;i<arr.length;i++)
			System.out.print(arr[i]+" ");
		Arrays.sort(arr);//升序排序
		System.out.println("\n排序后的数组:");
		for(int i=0;i<arr.length;i++)
			System.out.print(arr[i]+" ");
		
		//复制数组
		//copyOf()复制数组至指定长度
		//copyOfRange()将指定数组制定长度复制到一个新的数组中
		int array_1[]={3,6,9,23,45,78};
		System.out.println("\n\n原数组:");
		for(int i=0;i<array_1.length;i++)
			System.out.print(array_1[i]+" ");
		int[] newArray_1=Arrays.copyOf(array_1, 8);
		System.out.println("\n调用copyOf(),新数组:");
		for(int i=0;i<newArray_1.length;i++)
			System.out.print(newArray_1[i]+" ");
		int[] newArray_2=Arrays.copyOfRange(array_1, 1, 7);
		System.out.println("\n调用copyOfRange(),新数组:");
		for(int i=0;i<newArray_2.length;i++)
			System.out.print(newArray_2[i]+" ");
	}

}

 

package _5_4_数组的基本操作;

public class _5_4_Example_3 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//对比一维二维数组所占内存
		//一维数组占用内存
		int num1=1024*1024*2;//数组元素个数
		int array1 []=new int[num1];//定义int型数组
		for(int i=0;i<array1.length;i++)//赋值
			array1[i]=i;
		//获得占用内存数,并将其转化为MB
		long memory1=Runtime.getRuntime().totalMemory()/1024/1024;
		System.out.println("一维数组占用内存:"+memory1);
		//二维数组占用内存
		int num2=1024*1024;//数组元素个数
		int array2 [][]=new int[num2][2];//定义int型数组
		for(int i=0;i<array2.length;i++)//赋值
		{
			array2[i][0]=i;
			array2[i][1]=i;
		}	
		//获得占用内存数,并将其转化为MB
		long memory2=Runtime.getRuntime().totalMemory()/1024/1024;
		System.out.println("二维数组占用内存:"+memory2);
	}

}

 

package _5_4_数组的基本操作;

//使用直接插入法排序

public class _5_4_Example_4 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int number=10;
		int intArray []=new int[number];
		System.out.println("排序前:");
		for(int i=0;i<intArray.length;i++)
		{	
			intArray[i]=intArray.length-i;
			System.out.print(intArray[i]+" ");
		}
		//插入排序算法:每次插入的数前面的数都是排好序的
		for(int i=1;i<intArray.length;i++)
		{
			int j=i-1;
			int index=intArray[i];//记录index一便宜之后的交换
			while(j>=0&&intArray[j]>intArray[j+1])
			{
				//每当找到比这个数大的数的时候就交换,
				//直到之前的数没有比这个数大的
				intArray[j+1]=intArray[j];//
				intArray[j]=index;
				j--;
			}
		}
		System.out.println("\n排序后:");
		for(int i=0;i<intArray.length;i++)
			System.out.print(intArray[i]+" ");
	}

}

 

package _5_4_数组的基本操作;

//使用冒泡排序法排序

public class _5_4_Exercise_1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int number=10;
		int array[]=new int[number];
		System.out.println("冒泡排序前数组为:");
		for(int i=0;i<array.length;i++){
			array[i]=array.length-i;
			System.out.print(array[i]+" ");
		}
		System.out.println();
		//冒泡排序:较小元素向前排,较大元素向后排
		//for(int i=0;i<array.length-1;i++)
		//上面注释中写的也可以,因为最后一趟就一个元素,不需比较,只用九趟就行
		for(int i=0;i<array.length;i++){//每一趟循环都找出较小的向前排
			for(int j=array.length-1;j>0;j--){
				if(array[j]<array[j-1]){//把较小元素循环向前排
					int temp=array[j];
					array[j]=array[j-1];
					array[j-1]=temp;
				}
			}
			System.out.println("第"+(i+1)+"趟循环得到:");
			for(int k=0;k<array.length;k++)
				System.out.print(array[k]+" ");
			System.out.println();
		}
	}

}

 

package _5_4_数组的基本操作;

//输出九宫格:数字1-9组成3*3矩阵,使得行列对角线三个数之和等于15
//采用循环求解
//九宫格分为中,上,下,左,右,左上,右上,左下,右下
public class _5_4_Exercise_2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int arr[][]=new int[3][3];
		int a=2;//第三行的行下标
		int b=3/2;//第二列的列下标
		for(int i=1;i<=9;i++){
			arr[a++][b++]=i;
			if(i%3==0){//如果i是3的倍数
				a=a-2;
				b=b-1;
			}else{//如果i不是3的倍数
				a=a%3;
				b=b%3;
			}
		}
		System.out.println("输出九宫格:");
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++)
				System.out.print(arr[i][j]+" ");
			System.out.println();
		}
	}
	
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics