(一)数组静态初始化
1.
package test;
public class test {
public static void main(String [] args)
{
//元素类型[] 数组名=new 元素类型[元素个数] (关键字new用来在内存中产生一个容器实体,用来存储很多数据的地方)
//需求: 想定义一个可以储存3个整数的容器
/*int[] x=new int[3];
int x[]=new int[3];//等价于上面的,但是最好用上面的
int[] x=new int[]{3,1,2,7,4,5};//数组中元素的内容静态初始化
int[] x={3,1,2,7,4,5};
int[] x=new int[5];
x[0]=90;
x[1]=80;*/
int[] a=new int[3];
System.out.println(a[2]);
}
}
控制台输出结果:
0
package test;
public class test {
public static void main(String [] args)
{
//获取数组中的元素
//int arr[]=new int[3];
int[] arr={1,2,7,4,5,6};
//数组中有一个属性可以直接获取到数组元素个数,length
//使用方式,数组名称.length=
//System.out.println(arr.length);
int sum=0;
for(int x=0;x<arr.length;x++)
{
sum+=arr[x];
System.out.println("arr["+x+"]="+arr[x]+';');
}
System.out.println(sum);
}
}
arr[0]=1;
arr[1]=2;
arr[2]=7;
arr[3]=4;
arr[4]=5;
arr[5]=6;
25
(二)排序(选择排序)
package test;
public class test {
public static void fun(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 main(String[] args)
{
int[] arr={3,4,5,12,1,3};//此处要是没有“【】”会报错
//在排序前打印
print(arr);
fun(arr);
//在排序后打印
print(arr);
}
public static void print(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
控制台输出结果:
[3,4,5,12,1,3]
[1,3,3,4,5,12]
2.冒泡排序:
package test;
public class test {
public static void fun(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[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
public static void main(String[] args)
{
int[] arr={3,4,5,12,1,3};//此处要是没有“【】”会报错
//在排序前打印
print(arr);
fun(arr);
//在排序后打印
print(arr);
}
public static void print(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
控制台输出结果:
[3,4,5,12,1,3]
[1,3,3,4,5,12]
(3)
package test;
public class test {
public static void fun(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[y];
arr[y]=arr[y+1];
arr[y+1]=temp;*/
swap(arr,y,y+1);
}
}
}
}
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void main(String[] args)
{
int[] arr={3,4,5,12,1,3};//此处要是没有“【】”会报错
//在排序前打印
print(arr);
fun(arr);
//在排序后打印
print(arr);
}
public static void print(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
控制台输出:
[3,4,5,12,1,3]
[1,3,3,4,5,12]
(数组的折半查找):
package test;
public class test {
public static void main(String [] args)
{
/*int[] arr={11,22,33,44,55,66,77,88,99,00};
int index=fun(arr,99);
System.out.println("index="+index);*/
int[] arr={2,4,5,7,19,10};
int index=fun(arr,19);
System.out.println("index="+index);
}
//折半查找可以提高效率,但是必须要保证该数组是有序数组
//min=0;
//max=arr.length-1;
//mid=(min+max)/2;
public static int fun(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;
}
//定义功能,获取key第一次出现在数组中的位置,如果返回是-1,那么代表该key在数组中不存在
/*public static int fun(int [] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
{
return x;
}
}
return -1;
}*/
}
控制台输出结果:
index=4
package test;
public class test {
public static void main(String [] args)
{
/*int[] arr={11,22,33,44,55,66,77,88,99,00};
int index=fun(arr,99);
System.out.println("index="+index);*/
int[] arr={2,4,5,7,19,10};
int index=fun(arr,19);
System.out.println("index="+index);
}
//折半查找可以提高效率,但是必须要保证该数组是有序数组
//min=0;
//max=arr.length-1;
//mid=(min+max)/2;
//折半查找的第一种方式
/*public static int fun(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 fun(int[] arr,int key)
{
int min=0,mid,max=arr.length-1;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
}
控制台输出结果:
index=4
(折半查找的练习):
package test;
public class test {
public static void main(String [] args)
{
int[] arr={2,4,5,7,10,19,22,34};//比方说将20插进该数组中。找到插入的该数的位置
int index=get_index(arr,20);
System.out.println("index="+index);
}
//折半查找可以提高效率,但是必须要保证该数组是有序数组
//min=0;
//max=arr.length-1;
//mid=(min+max)/2;
//有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的
public static int get_index(int[] arr,int key)
{
int min=0,mid,max=arr.length-1;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return min;//min就是8插入的数组的下标
}
}
控制台输出结果:
index=6