数组(主要介绍关于数组的一些常用算法)

一、在使用二维数组对象时,length代表长度。数组名后直接加上length(array.length),表示的是数组有几行,在指定的索引后加上length(array[0].length),表示的是该行拥有多少个元素,也就是列数。


二、使用二维数组实现打印一组数据中的最大值与最小值。

public class ArrayMaxMin {
	int grades[][] = {{77,68,86,73},{96,87,89,81},{70,90,86,81}};
	public  int miniGrade(){
		int lowGrade = grades[0][0];
		for(int row = 0;row < grades.length;row++){
			for(int column = 0;column < grades[row].length;column++){
				if(grades[row][column] < lowGrade){
					lowGrade = grades[row][column];
				}
			}
		}
		return lowGrade;	
	}
	public int maxiGrade(){
		int highGrade = grades[0][0];
		for(int row = 0;row < grades.length;row++){
			for(int column = 0;column < grades[row].length;column++){
				if(grades[row][column] > highGrade){
					highGrade = grades[row][column];
				}
			}
		}
		return highGrade;
	}
public static void main(String[] args){
		
		
		ArrayMaxMin a = new ArrayMaxMin();
		System.out.println("最高分是: " + a.maxiGrade());
		System.out.println("最低分是: "  +a.miniGrade());
	}
	
}



打印出来的结果是   最高分是:96 

                                最低分是:68


三、操作数组的主要方法简介

1、复制数组(方法名是arraycopy()),应用实例如下:

import java.util.*;

public class ArrayCopy {
	public static void main(String[] args){
	int[] arr1 = {1,2,3,4,5,6};
	int[] arr2 = new int[6];
	System.arraycopy(arr1, 0, arr2, 0, 6);
	for(int i = 0;i < arr2.length;i++){
	    System.out.println("arr2["+i+"] = "+arr2[i]);	
	}
	}
}

输出结果如下:

arr2[0] = 1
arr2[1] = 2
arr2[2] = 3
arr2[3] = 4
arr2[4] = 5
arr2[5] = 6

通过结果可以发现arr2[]数组成功复制了arr1[]数组

2、排序数组(方法名sort()),Array.sort(a);   a:排序数组的名称

实例如下:

import java.util.*;

public class Arraysort {
	public static void main(String[] args){
		String[] arr1  = new String[]{"ba","aeiq","EJI","133"};
		Arrays.sort(arr1);
		System.out.println(Arrays.asList(arr1));
		
	}

}

输出的结果是:[133, EJI, aeiq, ba],Java中的String排序算法是根据字典编排顺序排序的,所有数字排在字母前面,大写字母排在小写字母前面。


3、比较数组(方法名equals()),Array.equals(arrayA,arrayB);  其中arrayA:待比较的数组名称,arrayB:待比较的数组名称;

此方法的返回值类型为boolean类型,此方法比较的内容包括数组的长度和内容,如果有一项不满足,则返回false,否则,返回true

4、搜索数组(采用方法binarySearch()方法),int i = binarySearch(a, "abc");  其中a:搜索数组的名称,abc:需要在数组中查找的内容,此方法有一点需要注意,就是被查找的数组必须是已经排序好的,如果查到了所需的元素,则返回该元素所在数组中的位置,否则返回一个“负数”,实例如下:

import java.util.Arrays;

public class BinarySearch {
	public static void main(String[] args){
    String[] arrStr = {"桐柏路","西流湖","化工路","中原路"};
	//byte arr[] = Arrays.sort(arrStr[],new comparator());
	/*public int compare(){
		
	}*/
	int location = Arrays.binarySearch(arrStr, "西流湖");
	
		System.out.println("西流湖是在第 "  +  (location + 1) + "站");
	}

}

结果是:西流湖是在第 2站

5、填充数组(方法名Array.fill())

int array[] = new int[10];  Array.fill(array,11);    //array:将被填充数组的名称,    上述代码实现了将数值11填充到数组a中。

实例如下:

import java.util.Arrays;

public class Arrayfill  {
	public static void main(String[] args){
	int array[] = new int[6];
//System.out.println("输出数组元素依次是: "+"");
    for(int i = 0;i < 6;i++){
    	Arrays.fill(array, i);
    	System.out.println("array["+i+"] = "+ array[i]);
    }
}
}

输出结果是:

array[0] = 0
array[1] = 1
array[2] = 2
array[3] = 3
array[4] = 4
array[5] = 5
6、传递数组(实质上就是传递引用)

实例如下:

import java.util.*;

public class ModifyArray {
	public static int array1[] = {1,2,3,4,5};

	public static void main(String[] args){
		for(int i = 0;i < array1.length;i++){
			System.out.println("输出没有传值之前的数组是  " + array1[i]);
		}
		ModifyArray.modifyArray(array1);
		//midify(array1);
		
	}
	public static void modifyArray(int array1[]){
		for(int i = 0;i < array1.length;i++){
			array1[i] *= 2;
			System.out.println("输出传值之后的数组是" + array1[i]);
		}
		
	}
	

}
输出结果是:

输出没有传值之前的数组是  2
输出没有传值之前的数组是  3
输出没有传值之前的数组是  4
输出没有传值之前的数组是  5
输出传值之后的数组是2
输出传值之后的数组是4
输出传值之后的数组是6
输出传值之后的数组是8
输出传值之后的数组是10

7、冒泡法

实例如下(利用冒泡法对数组内的数字进行排序,从大到小的顺序进行输出):

public class Mopaofa {
	public static void main(String[] args){
		int num[] = {123,345,111,789,254};
		int tem;
		for(int i = 0;i < num.length-1;i++){
			for(int j = 0;j < num.length-1-i;j++){
				if(num[j] < num[j+1]){
					tem = num[j];
					num[j] =  num[j+1];
					num[j+1] = tem;
				}
			}
		}
		for(int i = 0;i < num.length;i++){
			System.out.println("输出排序后的的数组  " + num[i]);
		}
	}

}
输出的结果是:

输出排序后的的数组  789
输出排序后的的数组  345
输出排序后的的数组  254
输出排序后的的数组  123
输出排序后的的数组  111

8、选择排序法(利用选择排序法对数组内的数字进行排序,从小到大的顺序进行输出)

public class xuanZePaiXu {
public static void main(String[] args) {
int[] a = { 2, 6, 4, 5, 1, 7, 3 };
for (int i = 0; i < a.length; i++) {
int temp = 0;
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for (int t : a) {
System.out.print(t + ",");
}
}
}

输出结果是:

1,2,3,4,5,6,7,







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值