您的位置:首页 > 编程语言 > Java开发

java基础复习--4

2012-11-01 09:31 155 查看
数组的定义

注意:数组越界,空指针异常

数组的操作:遍历、获取最值

选择排序、冒泡排序

public class Sort {

/*

*实现选择排序和冒泡排序

*/

public static void main(String[] args) {

int[] arr={1,5,6,9,8,4,2,12};

//selectSort(arr);

bubbleSort(arr);

for(int i=0;i<arr.length;i++)

{

System.out.println(arr[i]+",");

}

}

public static void selectSort(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;

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}

}

public static void bubbleSort(int[] arr)//冒泡排序

{

for(int i=0;i<arr.length;i++)

{

for(int j=0;j<arr.length-i-1;j++)

{

if(arr[j]>arr[j+1])

{

int temp;

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

}

}

/*二分查找法*/

class HalfSearch

{

public static void main(String[] args)

{

int[] arr={1,5,6,8,12,35,89};

System.out.println(halfSearch1(arr,35));

}

public static int halfSearch1(int[] arr,int key)

{

int min=0,max=arr.length-1,mid=(min+max)/2;

while(arr[mid]!=key)

{

mid=(min+max)/2;

if(arr[mid]<key)

{

min=mid+1;

}

else if(arr[mid]>key)

{

max=mid-1;

}

if(min>max)

{

return -1;

}

}

return mid;

}

public static int halfSearch2(int[] arr,int key)

{

int min=0,max=arr.length-1,mid=(min+max)/2;

while(min<=max)

{

mid=(min+max)/2;

if(arr[mid]<key)

{

min=mid+1;

}

else if(arr[mid]>key)

{

max=mid-1;

}

else

{

return mid;

}

}

return -1;

}

}

/*数值转换*/

class Jinzhi

{

public static void main(String[] args)

{

//toB(4);

//toH(60);

//toBin(4);

//toBa(8);

toHix(60);

}

public static void toB(int num)

{

StringBuffer sb=new StringBuffer();

while(num>0)

{

//System.out.println(num%2);

sb.append(num%2);

num/=2;

}

System.out.println(sb.reverse());

}

public static void toH(int num)

{

StringBuffer sb=new StringBuffer();

for(int i=0;i<8;i++)

{

int temp=num & 15;

if(temp>9)

{

sb.append((char)(temp-10+'A'));

}

else

{

sb.append(temp);

}

num=num >>> 4;

}

System.out.println(sb.reverse());

}

public static void chabiao(int num,int base,int offset)//用查表法实现数制转换,base表示需要 & 的数值,offset表示需要 >>> 的数值

{

char[] chs = {'0','1','2','3'//用相应的角标来对应用来表示进制的字符

,'4','5','6','7'

,'8','9','A','B'

,'C','D','E','F'};

char[] arr=new char[32];//用来储存转换后的数组

int pos=arr.length;//表示正在转换的位置

while(num!=0)

{

arr[--pos]=chs[num & base];

num=num>>>offset;

}

for(int i=pos;i<arr.length;i++)

{

System.out.print(arr[i]);

}

}

public static void toHix(int num)

{

chabiao(num,15,4);

}

public static void toBin(int num)

{

chabiao(num,1,1);

}

public static void toBa(int num)

{

chabiao(num,7,3);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: