class Demo1
{
/*
定义一个获取int数组中最大值的功能
1:确定结果;返回值类型为int
2;未知内容,要获取哪个数组中的最大值不确定,数组就是未知内容,需要定义成参数。
思路:1:定义一个变量,记录住数组中比较大的元素,因为该元素是不确定的,该变量初始化成任意一个元素即可,
2;遍历数组,让数组中每一个元素和改变量进行比较
3;当便利到的袁术比记录的元数大时,需要将该变量记录住比较大的元素,当循环结束,该变量就是数组中的最大值
*/
public static int getMax(int[] arr) //获取最大值
{
int max=arr[0];
for(int i=1;i<arr.length;i++)
{
if(arr[i]>max)
{
max=arr[i];
}
}
return max;
}
/*
选择排序:
以一个角标的元素和其他元素进行比较
在内循环第一次结束,最值出现在头角标的位置上
*/
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){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
/*
冒泡排序:
比较方式;相邻两个元素进行比较,如果满足条件就进行位置置换
原理:内循环结束一次,最值出现在尾角标位置。
*/
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for (int y=0;y<arr.length-x-1;y++) //-x:让没次参与比较的元素递减,-1:避免角标越界,
{
if(arr[y]>arr[y+1])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
/*
将一个int数组变成字符串
其实很简单,就是使用字符串相连接的原理,
*/
public static String arrayToString(int[] arr)
{
String str="";
for(int x=0;x<arr.lengthl;x++)
{
if(x!=arr.length-1;x++)
{
str=str+arr[x]+",";
}
else
str=str+arr[x];
}
}
/*
为了提高效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效,
这种方法也称为二分查找法。
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid]
{
min=mid+1;
}
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
/*
对数组中的元素进行查找,获取该元素第一次出现的位置
*/
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
/*
对数租中的元素进行反转
*/
public static void reverseArray(int[] arr)
{
for(int start=0,end=arr.length-1;start<end;start++,end--)
{
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
/*
定义一个功能,完成十进制转成二进制的运算
*/
public static void toBin(int num)
{
while(num>0)
{
System.out.println(num%2);
num=num/2;
}
}
/*
获取十进制到十六进制的转换,
*/
public static void toHex(int num)
{
for(int x=0;x<8;x++)//int类型是32位,没次移4位,总共移8次,
{
int temp=num&15; //获取num最低的四个二进制位
if(temp>9)
{
System.out.println((char)(temp-10+'a'));
}
else
System.out.println((char)(temp+'0'));
num=num>>>4;
}
}
/*查表法:当我们发现:
1.&15后的结果肯定在1-15之间,
2.该数字结果都有对应的十六进制中的元素,
这时就有了一个想法,如果把十六进制的元素存储到一个数组中,
然后将&15后的结果作为该数组的角标去获取对应的字符,即可完成十六进制获取,
不用在进行-10+'a'的动作,这样比较简单,
因为每次&运算后的结果和十六进制的元素都有一一对应的关系,
什么时候使用查表法?
当运算的结果和已有的数据有对应关系时,就可以使用查表法
这个表是一个容器,可以是数组,也可以是集合,
*/
public static void toHex(int num) //通过查表法完成十进制--十六进制的操作
{
//1,定义一个表
char[] chs={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F'};
//2定义临时容器,用于存储每一次查表后的结果
char[] arr=new char[8]; //32位2进制,是8位十六进制。
//3定义指针用于操作arr数组,并给数组中的元素进行赋值
int pos=arr.length;
//4定义循环,重复进行&运算和查表运算和右移运算,
while(num!=0)
{
//进行&15运算获取四个二进制位
int temp=num&15;
//将temp作为角标去查chs表,并将查到的结果存储到arr数组中,
arr[--pos]=chs[temp];
//获取下一组四个二进制位
num==num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.println(arr[x]);
}
}
//根据查表法的原理,完成十进制--二进制的操作,
//java提供的方法Integer.toBinaryString(num);
public static void toBin(int num)
{
char[] chs={'0','1'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0)
{
int temp=num&1;
arr[--pos]=chs[temp];
num=num>>>1;
}
for(int x=pos;x<arr.length;x++)
{
System.out.println(arr[x]);
}
}
//二维数组,int[][] arr=new int[x][]; //必须有x
public static void main(String[] args)
{
int[] arr={3,4,8,5,2,1,0,9};
int a=getMax(arr);
System.out.println("max"+a);
}
}
{
/*
定义一个获取int数组中最大值的功能
1:确定结果;返回值类型为int
2;未知内容,要获取哪个数组中的最大值不确定,数组就是未知内容,需要定义成参数。
思路:1:定义一个变量,记录住数组中比较大的元素,因为该元素是不确定的,该变量初始化成任意一个元素即可,
2;遍历数组,让数组中每一个元素和改变量进行比较
3;当便利到的袁术比记录的元数大时,需要将该变量记录住比较大的元素,当循环结束,该变量就是数组中的最大值
*/
public static int getMax(int[] arr) //获取最大值
{
int max=arr[0];
for(int i=1;i<arr.length;i++)
{
if(arr[i]>max)
{
max=arr[i];
}
}
return max;
}
/*
选择排序:
以一个角标的元素和其他元素进行比较
在内循环第一次结束,最值出现在头角标的位置上
*/
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){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
/*
冒泡排序:
比较方式;相邻两个元素进行比较,如果满足条件就进行位置置换
原理:内循环结束一次,最值出现在尾角标位置。
*/
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for (int y=0;y<arr.length-x-1;y++) //-x:让没次参与比较的元素递减,-1:避免角标越界,
{
if(arr[y]>arr[y+1])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
/*
将一个int数组变成字符串
其实很简单,就是使用字符串相连接的原理,
*/
public static String arrayToString(int[] arr)
{
String str="";
for(int x=0;x<arr.lengthl;x++)
{
if(x!=arr.length-1;x++)
{
str=str+arr[x]+",";
}
else
str=str+arr[x];
}
}
/*
为了提高效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效,
这种方法也称为二分查找法。
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid]
{
min=mid+1;
}
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
/*
对数组中的元素进行查找,获取该元素第一次出现的位置
*/
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
/*
对数租中的元素进行反转
*/
public static void reverseArray(int[] arr)
{
for(int start=0,end=arr.length-1;start<end;start++,end--)
{
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
/*
定义一个功能,完成十进制转成二进制的运算
*/
public static void toBin(int num)
{
while(num>0)
{
System.out.println(num%2);
num=num/2;
}
}
/*
获取十进制到十六进制的转换,
*/
public static void toHex(int num)
{
for(int x=0;x<8;x++)//int类型是32位,没次移4位,总共移8次,
{
int temp=num&15; //获取num最低的四个二进制位
if(temp>9)
{
System.out.println((char)(temp-10+'a'));
}
else
System.out.println((char)(temp+'0'));
num=num>>>4;
}
}
/*查表法:当我们发现:
1.&15后的结果肯定在1-15之间,
2.该数字结果都有对应的十六进制中的元素,
这时就有了一个想法,如果把十六进制的元素存储到一个数组中,
然后将&15后的结果作为该数组的角标去获取对应的字符,即可完成十六进制获取,
不用在进行-10+'a'的动作,这样比较简单,
因为每次&运算后的结果和十六进制的元素都有一一对应的关系,
什么时候使用查表法?
当运算的结果和已有的数据有对应关系时,就可以使用查表法
这个表是一个容器,可以是数组,也可以是集合,
*/
public static void toHex(int num) //通过查表法完成十进制--十六进制的操作
{
//1,定义一个表
char[] chs={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F'};
//2定义临时容器,用于存储每一次查表后的结果
char[] arr=new char[8]; //32位2进制,是8位十六进制。
//3定义指针用于操作arr数组,并给数组中的元素进行赋值
int pos=arr.length;
//4定义循环,重复进行&运算和查表运算和右移运算,
while(num!=0)
{
//进行&15运算获取四个二进制位
int temp=num&15;
//将temp作为角标去查chs表,并将查到的结果存储到arr数组中,
arr[--pos]=chs[temp];
//获取下一组四个二进制位
num==num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.println(arr[x]);
}
}
//根据查表法的原理,完成十进制--二进制的操作,
//java提供的方法Integer.toBinaryString(num);
public static void toBin(int num)
{
char[] chs={'0','1'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0)
{
int temp=num&1;
arr[--pos]=chs[temp];
num=num>>>1;
}
for(int x=pos;x<arr.length;x++)
{
System.out.println(arr[x]);
}
}
//二维数组,int[][] arr=new int[x][]; //必须有x
public static void main(String[] args)
{
int[] arr={3,4,8,5,2,1,0,9};
int a=getMax(arr);
System.out.println("max"+a);
}
}