----------------------android培训、java培训、期待与您交流! ----------------------
一:数组
数组就是相同类型的元素的集合,元素在数组中会有自己的编号,编号从0开始
数组有主要两种定义方式:
1. 数据类型 [ ] 数组名 = new 数据类型 [元素个数]; 2. 数据类型 数组名 [ ] = new 数据类型 [元素个数];
通常使用第一种定义方式
数组有两种初始化方式:
1.静态初始化: 数据类型 [ ] 数组名 = new 数据类型 {值1, 值2,....} 或者 数据类型 [ ] 数组名 = {值1, 值2,....}
2.动态初始化: 数组名[0]=值1; 数组名[1]=值2; .......
获取数组的长度: 数组名.length
获取数组的最值:
/*
获取数组中的最大值和最小值
*/
public class ArrayTest
{
public static void main(String [] args)
{
//定义一个数组
int [] x={-5,-8,-12,-3,-6,-1,-30};
Arrays(x);
}
public static void Arrays(int [] x)
{
int max=x[0]; //存放最大值
int min=x[0]; //存放最小值
//计算最大值
for(int i=1; i<x.length; i++)
{
if(x[i]>max)
max=x[i]; //如果x[i]大于max,就把x[i]赋值给max
}
//计算最小值
for(int i=1 ;i<x.length; i++)
{
if(x[i]<min)
min=x[i]; //如果x[i]小鱼min,就把x[i]赋值给min
}
System.out.println("最大值是:"+max);
System.out.println("最小值是:"+min);
}
}
查找数组中指定元素的脚标:
折半查找:前提是数组中的元素是有序的
/*
折半查找,查找数组中指定元素的下标
前提:数组元素必须是有序的
*/
public class helfArrays
{
public static void main(String [] args)
{
int [] arr={2,5,7,9,10,12,15}; //定义一个有序的数组
int index=HelfArrays(arr,10);
System.out.print(index);
}
//折半查找
//参数中为什么还有要数组? 因为数组也是不确定的,需要从外界传入
//arr 外界传入的数组; key 要查找的数
public static int HelfArrays(int [] arr, int key)
{
int min=0; //折半查找左边的临界点(最小值)
int max=arr.length; //折半查找右边的临界点(最大值)
int mid; //折半查找的中间量
while(min<=max) //只要最小值<最大值就可以进行折半查找 ,这里是min<=max,因为如果只有一个数的时候,最小值等于最大值
{
mid=(min+max)/2; //取得中间量
if(key>arr[mid]) //如果要查找的值>中间量下表对应的值,if条件不能写成a[key]>mid,这个中的key是a数组的角标,而不是元素
{
min=mid+1; //最小值往右移,移到中间值+1的位置
}
else if(key<arr[mid])//如果要查找的值<中间量下表对应的值
{
max=mid-1; //最大值往左移,移到中间值-1的位置
}
else //找到了这个数(要找的数刚好是中间值对应的值)
return mid; //返回中间值
}
return -1; //数组中没有这个数,返回-1
}
}
二:排序
选择排序:
/*
选择排序
*/
public class ArraTest2
{
public static void main(String [] args)
{
//定义一个数组
int [] x={3,2,4,1,5,8,10};
//排序前;
ShowArrays(x);
//排序
SelectArray(x);
//排序后
ShowArrays(x);
}
//开始排序
public static void SelectArray(int [] x)
{
for(int i =0; i<x.length; i++)
{
for(int y=(i+1); y<x.length-1; y++) //依次和第一个,第二个,第三个....元素对比
{
if(x[i]>x[y])
{
int temp=x[i];
x[i]=x[y];
x[y]=temp;
}
}
}
}
//遍历数组
public static void ShowArrays(int [] x)
{
for(int i=0; i<x.length; i++)
{
System.out.print(x[i]+" ");
}
System.out.println(" ");
}
}
冒泡排序: 两个相邻元素比较,每比较一圈,就少一个元素
/*
冒泡排序
*/
public class BubbleSort
{
public static void main(String [] args)
{ //定义数组
int [] arr={3,5,8,6,1,4,2};
//排序前
ShowArray(arr);
//排序
BubbleSort(arr);
//排序后
ShowArray(arr);
}
//遍历数组
public static void ShowArray(int [] a)
{
for(int i=0; i<a.length; i++)
{
System.out.print(a[i]);
}
System.out.println("");
}
//排序
public static void BubbleSort(int [] a )
{
//冒牌排序是相邻两个数比较,最后一个数后面没有值,所以长度1,
for(int i=0; i<a.length-1; i++)
{
//每圈排序后,要排序的值就减少i个
for (int y=0; y<a.length-1-i; y++)
{
if(a[y]>a[y+1])
{
int temp=a[y];
a[y]=a[y+1];
a[y+1]=temp;
}
}
}
}
}
三: 进制转换
查表法:适用于十进制转换成各种进制类型
/*
查表法
十进制转二进制,八进制,十六进制的通用方法
*/
public class TenToAll
{
public static void main(String [] args)
{
System.out.println("转二进制:");
newToBin(60);
System.out.println("\n转八进制:");
newTo8(60);
System.out.println("\n转十六进制:");
newTo16(60);
}
//十进制转二进制
public static void newToBin(int num)
{
newToAll(num,1,1);
}
//十进制转八进制
public static void newTo8(int num)
{
newToAll(num,7,3);
}
//十进制转十六进制
public static void newTo16(int num)
{
newToAll(num,15,4);
}
//传入三个参数,num是要转化的值,base是要 与 的值,offset是要右移的值
public static void newToAll(int num,int base, int offset)
{
char [] arr={'0','1','2','3','4', //从0开始,不是从1开始
'5','6','7','8',
'9','A','B','C',
'D','E','F'};
char [] temp=new char[32]; //用于存放得到的值
int pos=temp.length; //操作循环的指针
if(num == 0) //如果输入的值是0,就直接打印
{
System.out.print(0);
return;
}
while(num != 0)
{
int n=num&base; //取最低4位的进制值
temp[--pos]=arr[n]; //查表
num>>>=offset;
}
for(int i = pos; i< temp.length ; i++)
{
System.out.print(temp[i]);
}
}
}
----------------------android培训.java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima