java-数组静态初始化、选择排序、冒泡排序、数组的折半查找、折半查找练习

(一)数组静态初始化

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值