学习了数组的定义,排序,和数组在内存存储情况。
一.首先数组时引用类型的,定义数组 (有三种方法定义数组)
1.动态的定义一个数组这样定义数组的默认初始化值是0
int [] number= new int[3];
静态的定义一个数组,定义并且初始化了数组的值
2.int [] number={1,2,5,3,4,0};
3.int [] number=new int[]{1,2,5,3,4,0};(绝对不能写数组的长度,其效果和2相同)
二。从数组中读取数值只需要数组名[数组角标]即可,需注意的是数组的角标是从0开始的
例如 number[0] 的值是 1 ; number[2]的值是5
三,数组的排序
简单排序:简单排序就是就是从左到右逐个的进行比较。例如下图
我们一开始可以拿第一个数组角标的值然后逐一的和后面的值进行比较。
选择排序的特点是:
1.每一轮排序都会得到一个最大值或者最小值。
2.排序的效率太低
public 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;
}
}
}
}
2.冒泡排序:
代码:
其中内层循环中 y=arr.length-x-1 其中-x 是让每一次比较元素减少1个;-1防止角标越界。
四:数组的查找
1.逐个查找
利用循环逐一查找数组存在的返回数组的角标,不存在的返回-1.
public int getIndex(int[] arr, int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
{
return x
}
return -1;
}
}
2.折半查找(二分法查找)
这般查找效率高,但是数组必须是有序的。
public int getIndex(int[] arr int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2
while(arr[mid]!=key)
{
if(key>arr[mid])
{
mid+=1;
}
else if(key<arr[mid])
{
max-=1;
}
mid=(min+max)/2;
}
return mid;
}
五 数组的应用
题目:进制之间的转化,
//十进制转换成十六进制
public static void toHex(int num){
trans(num, 15, 4) ;
}
//十进制转换成八进制
public static void toBa(int num){
trans(num, 7, 3) ;
}
//十进制转换成二进制
public static void toBin(int num){
trans(num, 1, 1) ;
}
public static void trans(int num, int base, int offset) {
char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] ch = new char[32];
int pos=ch.length;
while (num != 0) {
int temp=num&base;
ch[--pos]=hex[temp];
num=num>>>offset;
}
for(int x=pos;x<ch.length;x++){
System.out.print(ch[x]);
}
}
java的数组
最新推荐文章于 2022-11-15 13:46:14 发布