数组

/*
 *数组是Java中的一种引用数据类型,可以存储基本数据类型的数据,也可以存储引用数据类型的数据。
 *
 *数组的一些常见操作:选择排序、冒泡排序、折半查找、查表
 */
package classfile;

/**
 *数组的简单应用
 *
 *@author programmer
 */
public class ArrayDemo
{
	public static void main(String[] args)
	{
		int[] arr = new int[]{4,3,5,1,7,9,0,2};

		selectionSort(arr);
		printArray(arr);

		bubbleSort(arr);
		printArray(arr);

		System.out.println("index of "+binarySearch(arr,17));

		toHex(60);

	}

	/**
	 *本方法可以将一个整数型的数组,以规范的形式输出在控制台上。
	 *
	 *@param arr
	 *			一个整数型的数组
	 */
	public static void printArray(int[] arr)
	{
		System.out.print("{");

		for(int i=0;i<arr.length;i++)
		{
			if(i!=arr.length-1)
			{
				System.out.print(arr[i]+",");
			}
			else
			{
				System.out.print(arr[i]);
			}
		}

		System.out.println("}");
	}

	/**
	 *本方法可以对一个整数型的数组,进行选择排序。
	 *
	 *@param arr
	 *			一个整数型的数组
	 */
	public static void selectionSort(int[] arr)//第一个元素先完成比较
	{
		for(int i=0;i<arr.length;i++)//外循环控制参与比较的元素的个数
		{
			for(int j=i+1;j<arr.length;j++)//内循环控制比较的动作
			{
				if(arr[i]>arr[j])
				{
					int temp = arr[i];//定义一个临时变量,用于置换两个数组元素的位置

					arr[i] = arr[j];

					arr[j] = temp;
				}
			}
		}
	}

	/**
	 *本方法可以对一个整数型的数组,进行冒泡排序。
	 *
	 *@param arr
	 *			一个整数型的数组
	 */
	public static void bubbleSort(int[] arr)//最后一个元素先完成比较
	{
		for(int i=0;i<arr.length-1;i++)//外循环控制参与比较的元素的个数
		{
			for(int j=0;j<arr.length-1-i;j++)//内循环控制比较的动作
			{
				if(arr[j]>arr[j+1])
				{
					int temp = arr[j];

					arr[j] = arr[j+1];

					arr[j+1] = temp;
				}
			}
		}
	}
	
	/**
	 *本方法可以对一个有序的整数型的数组,进行折半查找。
	 *
	 *@param arr
	 *			一个整数型的数组
	 *@param vlaue
	 *			一个整数型的数字
	 *@return 
	 *			返回被查找的数字在该数组中的角标,如果不存在则返回-1。
	 */
	public static int binarySearch(int[] arr,int value)
	{
		int min = 0,max = arr.length-1,mid = (min+max)/2;

		while(arr[mid]!=value)
		{
			if(value>arr[mid])
			{
				min = mid+1;
			}
			else
			{
				max = mid-1;
			}

			if(min>max)
			{
				return -1;//如果此处返回min,则就是该数字在不影响数组有序的情况下,可以插入的位置
			}

			mid = (min+max)/2;
		}

		return mid;
	}
	
	/**
	 *本方法可以将一个十进制的整数,转换为十六进制的表现形式,并在控制台上输出
	 *
	 *@param number
	 *				一个十进制的整数
	 */
	public static void toHex(int number)
	{
		System.out.print(number+"的十六进制的表示形式为:");
		
		char[] table = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//用数组建立一张表

		char[] arr = new char[8];

		int pointer = arr.length;

		while(number!=0)
		{
			int temp = number & 15;

			arr[--pointer] = table[temp];//将查到的内容存入临时数组中

			number = number>>>4;
		}
		
		for(int i=pointer;i<arr.length;i++)//输出查到的内容
		{
			System.out.print(arr[i]);
		}
		System.out.println();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值