数组

  1. MyEclipse的用法
    新建一个工程(目前创建的是Java Project)——》在工程的src下创建包(com.工程名.架构层次名,包名全小写)——》在包创建Java类

    Java Project:src(存放Java源码,一般用包来管理),bin(编译之后.class文件)

2.Java代码出错:
(1)编译报错 (2)运行出错
调试:(1)debug调试:设置断点——》点击虫子按纽进行调试——》通过观察变量和代码的执行状态来排错。(2)用输出调试。按代码的执行流程来判断出错的地方。

3.一维数组:一组数据类型相同的数据的集合。
(1)数组的五要素:数据类型,数组长度,数组名,数组元素,数组下标又名索引(从0开始)。
(2)数组的特点:a.存储一组类型相同的数据。b.数组可以存任意类型的数据。c.数组中每个元素的调用:数组名[下标]。d.数组是引用类型。e.数组一旦声明分配了空间,那么他的长度固定。f.数组下标的范围:0到数组长度-1.
(3)数组的声明
a.数组声明第一种
声明数组的语法:数据类型[] 数组名;
给数组分配空间:数组名=new 数据类型[长度];
String [] names;
names = new String[10];
b.数组声明第二种:
数据类型[] 数组名=new 数据类型[长度];
int [] age = new int [10];

(4)数组的赋值
a.动态赋值: 数组名[下标]=值;
String [] names;
names = new String[10];
names[0]=“张三”;
names[1]=“李四”;
names[2]=“王五”;

b.静态赋值:数据类型[] 数组名={值1,值2,值3};
		数据类型[] 数组名=new 数据类型[]{值1,值2,值3};

int [] age = new int []{15,17,20,19};
(5)数组的访问:数组名[下标]
System.out.println(names[1]);
System.out.println(age[age.length]);
(6)数组的长度:数组名.length

输出所有的数组
for(int i=0;i<age.length;i++){
System.out.println(age[i]);
}

4.算法:
(1)顺序查找
练习1:(顺序查找法)
有一个数列:8,4,2,1,23,344,12
循环输出数列的值
求数列中所有数值的和
猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数

class HomeWorkZy10 {

	public static void main(String[] args) {
		int[] nums={8,4,2,1,23,344,12};
		int sum=0;
		for(int i=0;i<nums.length;i++){
			sum=sum+nums[i];
			System.out.println(nums[i]);
		}
		System.out.println("数组的和为:"+sum);
		
		Scanner input=new Scanner(System.in);
		System.out.println("请输入一个数:");
		int num2=input.nextInt();
		
		boolean flag=false;//作标记,标记是否在数列中找到了当前数
		for (int i = 0; i < nums.length; i++) {
			if(num2==nums[i]){
				flag=true;
				break;
			}
		}
		
		if (flag==true) {
			System.out.println("数组中包含此数");
		} else {
			System.out.println("数组中不包含此数");
		}	
	}
}

(2)二分查找(前提条件,数列一定要有顺序)

public class ErFen {
	public static void main(String[] args) {
		//用二分查找法,查询此数列中是否包含10
		int[] nums={1,2,3,4,5,6,7,8,9};
		int find=7;
		
		int min=0;
		int max=nums.length-1;//8
		int mid=(max+min)/2;//4
		boolean flag=false;//作标记
		while(min<=max){
			if(find==nums[mid]){
				System.out.println("此数列中包含10");
				flag=true;
				break;
			}else if(find>nums[mid]){
				min=mid+1;//5
				mid=(max+min)/2;//6
			}else if(find<nums[mid]){
				max=mid-1;//-1
				mid=(max+min)/2;//0
				
			}
		}
	
		if(flag==false){
			System.out.println("此数列中不包含10");
		}
	}
}

(3)最大值最小值(打擂台)

public class MaxAndMin {
	public static void main(String[] args) {
		int[] nums={1,3,7,4,9,11,2,8};
		int max=nums[0];
		int min=nums[0];
		for (int i = 1; i < nums.length; i++) {
			if(max<nums[i]){
				max=nums[i];
			}
			if (min>nums[i]) {
				min=nums[i];
			}
		}
		System.out.println("最大值为:"+max);
		System.out.println("最小值为:"+min);
	}
}

学会查看JDK API
arrays binarySearch

(4)数组的排序:java.util.Arrays这个类是系统,专门用来对数组操作
//用二分查找法,查找一个数组中是否包含某个元素,返回找到元素的下标
int result= Arrays.binarySearch(nums, find);
//对一个数组进行升序排
Arrays.sort(nums1);

public static void main(String[] args) {
		int[] nums={1,2,3,4,5,6,7,8,9};
		int find=10;
		//用二分查找法,查找一个数组中是否包含某个元素,返回找到元素的下标
		int result= Arrays.binarySearch(nums, find);
		if(result>=0&&result<=nums.length-1){
			System.out.println("找到了");
			System.out.println("它在数组中的下标为:"+result);
		}else{
			System.out.println("没找到");
		}
		
		//对一个数组进行升序排序
		int[] nums1={1,3,7,4,9,11,2,8};
		System.out.println("排序前:");
		for (int i = 0; i < nums1.length; i++) {
			System.out.print(nums1[i]+"\t");
		}

		//对一个数组进行升序排
		Arrays.sort(nums1);

		System.out.println("\n升序排序后:");
		for (int i = 0; i < nums1.length; i++) {
			System.out.print(nums1[i]+"\t");
		}
		System.out.println("\n降序排序后:");
		for (int i = nums1.length-1; i >=0; i--) {
			System.out.print(nums1[i]+"\t");
		}
	}
}

(5)冒泡排序,外层循环控制轮数,内层循环控制次数

public final class MaoPao {
	public static void main(String[] args) {
		int[] nums={5,8,1,7,6 ,3};
		
		System.out.println("冒泡排序前:");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+"\t");
		}
		
		//冒泡排序,外层循环控制轮数,内层循环控制次数
		for(int i=1;i<=nums.length-1;i++){
			for(int j=1;j<=nums.length-i;j++){
			



if(nums[j-1]>nums[j]){
				int temp;
				temp=nums[j-1];
				nums[j-1]=nums[j];
				nums[j]=temp;
			}
		}
	}
	
	System.out.println("\n冒泡排序后:");
	for (int i = 0; i < nums.length; i++) {
		System.out.print(nums[i]+"\t");
	}
}

}

(6)选择排序

/**

  • 选择排序

  • /

    public class Choose {

     public static void main(String[] args) {
     	int[] nums={5,8,1,7,6,3};
     	
     	System.out.println("选择排序前:");
     	for (int i = 0; i < nums.length; i++) {
     		System.out.print(nums[i]+"\t");
     	}
     	
     	//选择排序,外层循环控制轮数,内层循环控制次数
     	for(int i=1;i<=nums.length-1;i++){//3
     		for(int j=i;j<=nums.length-1;j++){//5
     			if(nums[i-1]>nums[j]){
     				int temp;
     				temp=nums[i-1];
     				nums[i-1]=nums[j];
     				nums[j]=temp;
     			}
     		}
     	}
     	
     	System.out.println("\n冒泡排序后:");
     	for (int i = 0; i < nums.length; i++) {
     		System.out.print(nums[i]+"\t");
     	}
     }
    

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值