Java笔记二 之 数组工具类

/**
建立一个对数组操作的工具类,其中包含了对数组操作的常见方法,如最值、排序等.
@author khq
@version V1.0
*/

public class ArrayClass
{
	private ArrayClass(){};  //该类的所有方法都是静态的,不需要创建对象,为了避免其他程序创建该类对象,可以将该类的构造函数定义成私有的
	
	/**
	获取整型数组元素的最大值
	@param arr 接收一个元素为int类型的数组
	@return 返回该数组的最大值
	*/
	public static int getMax(int[] arr)
	{
		int maxIndex=0;
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]>arr[maxIndex])
				maxIndex=x;
		}
		return arr[maxIndex];
	}
	
	/**
	给数组选择排序
	@param arr 接收一个元素为int类型的数组
	*/
	public static void selectSort(int[] arr)
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=x+1;y<arr.length;y++)
			{
				if(arr[x]>arr[y])
				{
					swap(arr,y,x);
				}
			}
		}
	}
	
	/**
	给数组冒泡排序
	@param arr 接收一个元素为int类型的数组
	*/
	public static void bubbleSort(int[] arr)
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=0;y<arr.length-1-x;y++)
			{
				if(arr[y]>arr[y+1])
					swap(arr,y,y+1);
			}
		}
	}

	/**
	二分法查找
	@param arr 接收一个元素为int类型的数组
	@param key 在数组中要查找的元素
	@return 返回该元素所在的数组角标,若没有,则返回-1
	*/
	public static int binSearch(int[] arr,int key)
	{
		System.out.println("要查找的元素: "+key);
		int max,min,mid;
		min=0;
		max=arr.length-1;
			
		while(min<=max)
		{
			mid=(max+min)>>>1;
			if(arr[mid]>key)
			{
				max=mid-1;
			}
			else if(arr[mid]<key)
			{
				min=mid+1;
			}			
			else
				return mid;
		}
			return -1;  //return -mid-1;
	}
	
	/**
	将int类型的数组元素转换为字符串
	@param arr 接收一个元素为int类型的数组
	*/
	public static void arrayToString(int[] arr)
	{
		System.out.print("[");
		for(int x=0;x<arr.length;x++)
		{
			if(x!=arr.length-1)
				System.out.print(arr[x]+",");
			else
				System.out.print(arr[x]+"]");
		}
		System.out.println();
	}
	
	/**
	交换数组中两个元素的值
	@param arr 接收一个元素为int类型的数组
	@param a,b 表示数组元素的两个角标
	*/
	public static void swap(int[] arr,int a,int b)
	{
		int temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
}



class ArrayClassDemo
{
	public static void main(String[] args)
	{
		int[] arr={2,56,42,36,89,16,3,75,66,39};
		System.out.println("显示数组元素: ");
		ArrayClass.arrayToString(arr);
		
		int max=ArrayClass.getMax(arr);
		System.out.println("数组arr元素的最大值: "+max);
		
		ArrayClass.bubbleSort(arr);
		System.out.println("数组冒泡排序结果: ");
		ArrayClass.arrayToString(arr);
		
		//ArrayClass. selectSort(arr);
		//System.out.println("数组选择排序结果: ");
		//ArrayClass.arrayToString(arr);
		
		int index=ArrayClass.binSearch(arr,16);
		System.out.println("数组排序后,二分法查找该元素所在的数组角标: index="+index);
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值