Day 11 数组操作

本文详细介绍Eclipse的获取、安装、项目创建及导入过程,同时深入解析数组操作方法,包括查找最大最小值下标、元素插入与删除,以及通过选择排序算法实现数组排序。

Day 11 Eclipse使用和数组操作

1. Eclipse使用
1.1 获取

Eclipse官网

Eclipse下载页面

1. 下载界面中有Windows 64位压缩包和macOS压缩包,这里以Windows 64位为例进行说明
2. 点击“64-bit”后在“Download”的下方点击“Select Another Mirror”选择下方的China镜像提高下载速度
1.2 安装和准备
1. 解压Eclipse压缩包到一个非中文、非C盘路径下
	压缩包名eclipse-jee-2020-03-R-incubation-win32-x86_64.zip 
	解压之后变成名为eclipse的文件夹
	
2. 在eclipse的文件夹中找到eclipse.exe 发送到桌面快捷方式

3. 双击打开eclipse.exe

4. 打开eclipse在界面的Workpace中填写设置当前eclipse工作目录,选择非中文、非C盘路径,并勾选左下角的选项

5. 设置Eclipse工作环境,Eclipse软件的右上角

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FKzqJ2z-1590684082224)(Day 11 数组操作.assets/修改Eclipse工作环境.png)]

1.3 在Eclipse中创建Java项目
1. 点击file--new--Java Project后,在Project name中输入项目的名字点击finish
2. 点击左侧的project explorer下的src--new--Package创建包名
3. 点击创建的包名右键new--class--name输入当前文件的类名
1.4 Eclipse导入项目
file--import--general--Existing Projects into Workpace
点击Next后选择你需要导入项目的路径:Selet root directory
在Project中查看是否有对应的项目并勾选
最后点击Finish即可
2. 举例说明
2.1 找出数组中最大值的下标位置
public class HomeWork1 {
    public static void main(String[] args) {
	int[] arr = {1, 3, 5, 7, 9, 13, 11, 17, 19, 15};
		
	int index = indexOfMaxNumber(arr);
		
	System.out.println(index);
}
	
    /**
    * 找出数组中最大值的下标
    * 
    * @param arr 查询最大值下标的数组,int类型
    * @return 返回最大值的下标,int类型
    */
    public static int indexOfMaxNumber(int[] arr) {
	int index = 0;
		
	for (int i = 1; i < arr.length; i++) {
	    if (arr[index] < arr[i]) {
		index = i;
	    }
	}
		
	return index;
    }
}
2.2 找出数组中最小值的下标位置
public class HomeWork2 {
    public static void main(String[] args) {
	int[] arr = {1, 3, 5, 7, 9, 13, 11, 17, 19, 15};
		
	int index = indexOfMinNumber(arr);
		
	System.out.println(index);
}
	
    /**
    * 找出数组中最小值下标
    * 
    * @param arr int类型数组
    * @return 数组中最小值下标
    */
public static int indexOfMinNumber(int[] arr) {
    int index = 0;
	for (int i = 1; i < arr.length; i++) {
	    if (arr[index] > arr[i]) {
		index = i;
	    }
	}
		
	return index;
    }
}
2.3 在指定位置插入指定元素
public class HomeWork3 {
    public static void main(String[] args) {
	int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};
	int index = 1;
	int num = 100;
		
	boolean ret = addOneElement(array, index, num);
		
	if (ret) {
	    for (int i = 0; i < array.length; i++) {
		System.out.print(array[i] + " ");
	    }
	    System.out.println();
	} else {
	    System.out.println("方法运行失败!");
	}
    }
	
    /**
    * 在一个数组中的指定下标位置插入指定元素
    * 
    * @param arr   int类型数组
    * @param index 在数组中插入元素的指定下标,int类型
    * @param num   在数组中指定下标插入的指定元素,int类型
    * @return 方法完成添加操作,返回true,否则返回false
    */
    public static boolean addOneElement(int[] arr, int index, int num) {
        // 参数合法性判断,
        if (index < 0 || index > arr.length - 1) {
	    System.out.println("Input Parameter is Invalid!");
	    // 用户传入数据不合法,返回false,方法运行失败,终止方法运行
	    return false;
        }
		
        for (int i = arr.length - 1; i > index; i--) {
	    arr[i] = arr[i - 1];
        }
		
        arr[index] = num;
        // 运行成功,返回true
        return true;
    }
}
2.4 删除数组中指定下标的元素
public class HomeWork4 {
    public static void main(String[] args) {
	int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
	int index = 5;
		
	boolean ret = removeOneElement(array, index);
		
	if (ret) {
	    for (int i = 0; i < array.length; i++) {
		System.out.print(array[i] + " ");
	    }
	    System.out.println();
	} else {
	    System.out.println("方法运行失败!");
	}
    }
	
    /**
    * 删除数组中的指定下标的元素
    * 
    * @param arr   int类型源数组
    * @param index 数组中的指定下标
    * @return 方法运行成功,返回true,否则返回false
    */
    public static boolean removeOneElement(int[] arr, int index) {
	// 参数合法性判断
	if (index < 0 || index > arr.length - 1) {
	    System.out.println("Input Parameter is Invalid!");
	    // 用户传入数据不合法,返回false,方法运行失败,终止方法运行
	    return false;
	}
	for (int i = index; i < arr.length - 1; i++) {
	    arr[i] = arr[i + 1];
	}
	arr[arr.length - 1] = 0;
		
	return true;
    }
}
3. 选择排序算法推导
3.1 找出数组中最大值,和下标为0的元素互换位置
public class Demo1 {
    public static void main(String[] args) {
	int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
		
	transposition(arr);
		
	for (int i = 0; i < arr.length; i++) {
	    System.out.print(arr[i] + " ");
	}
    }
	
    /**
    * 找出数组中最大值,并与下标为0的元素互换位置,然后再剩余数组中找到最大值
    * 并与下标为1的元素互换位置,然后再剩余数组中找到最大值并与下标为的2元素
    * 互换位置
    * 
    * @param arr 目标源数组,int类型
    */
    public static void transposition(int[] arr) {
	/*
	 * 找出10个数中的最大值
	 */
	int index = 0;
		
	for (int i = 1; i < arr.length; i++) {
	    if (arr[index] < arr[i]) {
		index = i;
	    }
	}
	/*
	* 把最大值和下标为0的元素互换位置,假如下标为0的元素为最大值,不做任何操作
	*/
	if (index != 0) { 
	    int temp = arr[0];
	    arr[0] = arr[index];
	    arr[index] = temp;
	}
    }
}
3.2 接上一题, 找出数组中剩余数据最大值,和下标为1的元素互换位置
/*
* 下标为1的位置与剩余9个数中的最大值互换位置,假如下标为1的元素为最大值,不做任何操作
*/
int index = 1;
		
for (int i = 2; i < arr.length; i++) {
    if (arr[index] < arr[i]) {
	index = i;
    }
}
		
if (index != 1) {
    int temp = arr[1];
    arr[1] = arr[index];
    arr[index] = temp;
}
3.3 接上一题, 找出数组中剩余数据最大值,和下标为2的元素互换位置
int index = 2;                                       
/*                                               
* 下标为2的位置与剩余8个数中的最大值互换位置,假如下标为2的元素为最大值,不做任何操作              */                                              
for (int i = 3; i < arr.length; i++) {           
    if (arr[index] < arr[i]) {                   
	index = i;                               
    }                                            
}                                                
                                             
if (index != 2) {                                
    int temp = arr[2];                           
    arr[2] = arr[index];                         
    arr[index] = temp;                           
} 
3.4 选择排序算法
对上面的例子进行分析:
	需要比较的次数为数组的容量 - 1
	找到符合要求的数据下标位置
	从下标0位置开始,依次递增,进行数据的交换
	每交换一次,再次进行比较的初始位置在原来的基础上 + 1
public class Demo2 {
	public static void main(String[] args) {
		int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
		
		transposition(arr);
		
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
	
	/**
	 * 封装一个方法,将一个数组中的数据按照从大到小的顺序排序(选择排序算法)
	 * 
	 * @param arr 目标源数组,int类型
	 */
	public static void transposition(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			
			int index = i;
			
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[index] < arr[j]) {
					index = j;
				}
			}
			
			if (index != i) {
				int temp = arr[i];
				arr[i] = arr[index];
				arr[index] = temp;
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值