简单数组的应运、数组的复制、反转,数组中涉及的常见算法。数的查找(线性、二分查找)

1.数组元素的赋值(杨辉三角,回形数等)
2.求数值型数组中元素的最大值,最小值,平均数,总和等;
3.数组的复制,反转,查找(线性查找,二分法查找)
4.数组元素的排序算法

eg1:使用简单数组
(1)创建两个int[]类型的数组array1和array2;
(2)使用{},把array1初始化为:2 3  5 4 7 11 13  17 19
(3)显示array1的内容
(4)赋值array2变量等于array1,修改array2中的偶索引元素使其为(array[0]=0,array[2]=2....)打印array1

package com.enlai.consst;

/*
 * 练习4
 * 使用简单数组
(1)创建两个int[]类型的数组array1和array2;
(2)使用{},把array1初始化为:2 3  5 4 7 11 13  17 19
(3)显示array1的内容
(4)赋值array2变量等于array1,修改array2中的偶索引元素使其为
(array[0]=0,array[2]=2....)打印array1
 */
public class helloeverday{
	public static void main(String[] args)
	{
	int []array1,array2;
	array1=new int []{2,3,5,4,7,11,13,17,19};
	for(int i=0;i<array1.length;i++){
		System.out.print(array1[i]+"\t");
	}
	System.out.println();
//赋值
	array2=array1;
	for(int i=0;i<array2.length;i++)
	{
		if(i%2==0)
			array2[i]=i;
	}
	for(int i=0;i<array1.length;i++){
		System.out.print(array1[i]+"\t");
	}
	}
}

运行结果:

运行结果:
2    3    5    4    7    11    13    17    19    
0    3    2    4    4    11    6    17    8    


思考:array1和array2是什么关系?
array2=array1,可以这么理解,将array1保存的数组的地址值赋给了array2,使得array1和array2地址值相同,都指向了堆空间的唯一数组实体

拓展:改:实现array2对array1数组的复制;

package com.enlai.consst;

/*
 *改:实现array2对array1数组的复制;
 */
public class helloeverday{
	public static void main(String[] args)
	{
	int []array1,array2;
	array1=new int []{2,3,5,4,7,11,13,17,19};
System.out.print("array1:");
	for(int i=0;i<array1.length;i++){
		System.out.print(array1[i]+"\t");
	}
	System.out.println();
	//实现array2对array1数组的复制(区别于数组变量的赋值:array2=array1)
	array2=new int [array1.length];
	for(int i=0;i<array2.length;i++)
	{
		array2[i]=array1[i];
	}
	for(int i=0;i<array2.length;i++)
	{
		if(i%2==0)
			array2[i]=i;
	}
	System.out.print("array1:");
	for(int i=0;i<array1.length;i++){
		System.out.print(array1[i]+"\t");
	}
	System.out.println();
	System.out.print("array2:");
	for(int i=0;i<array2.length;i++)
	{
		System.out.print(array2[i]+"\t");
	}
	}
}


运行结果:
array1:2    3    5    4    7    11    13    17    19    
array1:2    3    5    4    7    11    13    17    19    
array2:0    3    2    4    4    11    6    17    8    

数组的反转

package com.enlai.consst;

/*
 *数组的反转
 */
public class helloeverday{
	public static void main(String[] args)
	{
		String []array1,array2;
		array1=new String[]{"aa","ss","dd","jj","kk","ll","hh"};
		//数组的反转
		/*
	//方法1:
		String  temp;
		for(int i=0;i<array1.length/2;i++)
		{
			temp=array1[i];
			array1[i]=array1[array1.length-i-1];
			array1[array1.length-1-i]=temp;
		}
		*/
	//方法2:
		String temp;
		for(int i=0,j=array1.length-1-i;i<j;i++,j--)
		{
			temp=array1[i];
			array1[i]=array1[j];
			array1[j]=temp;
		}
		//遍历
		for(int i=0;i<array1.length;i++)
		{
			System.out.print(array1[i]+"\t");
		}
		
	}
}

运行结果:
hh    ll    kk    jj    dd    ss    aa  

 
练习 6;
数的查找(线性查找,二分查找)

eg1:线性查找
package com.enlai.consst;

import java.util.Scanner;

public class helloeverday{
	public static void main(String[] args)
	{
		Scanner scan=new Scanner(System.in);
		String []array1;
		array1=new String[]{"aa","ss","dd","jj","kk","ll","hh"};
		//遍历
		for(int i=0;i<array1.length;i++)
		{
			System.out.print(array1[i]+"\t");
		}
		//查找
		//(线性查找)
		System.out.println();
		String samm;
		System.out.println("请输入你想找的值");
		samm=scan.next();
		boolean pan=true;
		for(int i=0;i<array1.length;i++){
			if(samm.equals(array1[i]))
			{
				System.out.println("找到该元素该元素的位置在"+i);
				pan=false;
				break;
			}
		}
		if(pan){
			System.out.println("没有找到该元素");
		}
		
	}
}

运行结果:
aa    ss    dd    jj    kk    ll    hh    
请输入你想找的值
ss
找到该元素该元素的位置在1
 

二分查找

eg2:二分查找
package com.enlai.consst;

import java.util.Scanner;


public class helloeverday{
	public static void main(String[] args)
	{
		Scanner scan=new Scanner(System.in);
	
		System.out.println();
		//二分查找
		//前提所要查找的前提是必须有序
		int []array2=new int []{-100,-34,-12,0,2,5,58,234};
		int start,end,middle=0;
		start=0;
		end=array2.length-1;
		boolean inflag=true;
		System.out.println("请输入你想要查找的值");
		int pan1=scan.nextInt();
		while(inflag)
		{
			middle=(start+end)/2;
			if(pan1==array2[middle]){
				System.out.println("已找到该元素,该元素的位置在"+middle);
				inflag=false;
				break;
			}
			else if(pan1>array2[middle]){
				start=middle+1;
			}
			else{
				end=middle-1;
			}
			
		}
		if(inflag)
		{
			System.out.println("找不到该元素");
		}
	}
}

运行结果:

请输入你想要查找的值
0
已找到该元素,该元素的位置在3

排序算法在下一篇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值