进制转换、冒泡排序、选择排序


class Tool
{
public static void trans(int num,int base,int offset) //num是需要转换的数,base是取一位数需要与的二进制位数,offset是向右移的位数
{

if(num==0)                         //如果需要转换的数为零,直接返回
{
System.out.println(0);
return ;
}
char[] chs = {'0','1','2','3'   //2~16进制所需要的字符
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
char[] arr = new char[32];      //定义一个可以装下32个字符的数组

int pos = arr.length;        //有效位长度

while(num!=0)             //判断是否转换完
{
int temp = num & base; //取最低位
arr[--pos] = chs[temp];//将转换的一位存在arr[]里
num = num >>> offset;
}

for(int x=pos; x<arr.length; x++)
{
System.out.print(arr[x]);//打印
}

return ;
}
public static void toBin(int num)
{
trans(num,1,1);
}

/*
十进制-->八进制
*/
public static void toOctal(int num)
{
trans(num,7,3);
}
/*
十进制-->十六进制
*/
public static void toHex(int num)
{
trans(num,15,4);
}
}
class UseTool
{
public static void main(String[] args)
{
Tool.toHex(19);           //调用
Tool.toOctal(23);         
Tool.Bin(23);
}
}
该进制转换程序将实现方法全部封装在类里,而类里面成员均为静态,不用创建对象即要可调用。

class SelecAndBubble
{
static void Selec(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])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
Sort.Desc(arr);
}
static void Bubble(int[] arr)          //冒泡排序
{
for(int x=0;x<arr.length;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
Sort.Desc(arr);
}
}
class Tool extends SelecAndBubble            //继承SelecAndBubble
{
static void SelecByAsc(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])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
Sort.Asc(arr);
}
static void BubbleByAsc(int[] arr)          //冒泡排序
{
for(int x=0;x<arr.length;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
Sort.Asc(arr);
}
}
class Sort
{
static void Desc(int[] arr)              //升序打印
{
for(int x=0;x<arr.length;x++)
{
System.out.println(arr[x]);
}
}
static void Asc(int[] arr)            //降序打印
{
for(int x=arr.length-1;x>=0;x--)
{
System.out.println(arr[x]);
}
}
}
class UseTool
{
public static void main(String[] args)
{
int[] arr={2,37,54,4,67,3};
Tool.SelecByAsc(arr);               
Tool.Bubble(arr);
}
}
该程序有选择排序和冒泡排序,有升序和降序的功能,还用到了继承的特性。


posted @ 2014-05-11 00:51  lisisong  阅读(189)  评论(0编辑  收藏  举报