龙空技术网

2020年最新Java全套教程数组算法

谁的大数据 162

前言:

今天看官们对“java如何给数组赋初值”可能比较关注,同学们都需要剖析一些“java如何给数组赋初值”的相关内容。那么小编也在网摘上收集了一些对于“java如何给数组赋初值””的相关文章,希望姐妹们能喜欢,兄弟们一起来学习一下吧!

数组算法1. 数组练习题【重点】1.1 找出数组中最小值的下标位置

public class Demo1 {public static void main(String[] args) {int[] arr = {1, 3, 5, 7, 9, 0, 4, 6, 8, 10};// Ctrl + 1 Assign statement to new local variableint min = minIndexOf(arr);System.out.println("min index : " + min);}/** 1.1 找出数组中最小值的下标位置* * 方法分析:* public static 不要问* 返回值类型:* 这里需要返回数据是数组的下标* int类型* 方法名:* minIndexOf* 形式参数列表:* 这里需要一个int类型数组* (int[] arr)* 方法声明:* public static int minIndexOf(int[] arr)*//*** 当前方法是找出指定int类型数组中最小值所在的下标位置* * @param arr int类型数组* @return 最小值所在的下标位置*/public static int minIndexOf(int[] arr) {// 假设最小值下标位置是下标为0的元素int min = 0;for (int i = 1; i < arr.length; i++) {if (arr[min] > arr[i]) {min = i;}}return min;}}
1.2 找出数组中指定元素的最后一次出现的下标位置
package com.qfedu.a_array;​public class Demo2 {public static void main(String[] args) {int[] arr = {1, 3, 5, 7, 9, 1, 3, 5, 7, 9};int index = lastIndexOf(arr, 7);System.out.println("last Index Of : " + index);}/** 1.2 找出数组中指定元素的最后一次出现的下标位置* 方法分析:* public static 不要问* 返回值类型:* int 返回值是一个下标* 方法名:* indexOf 第一次出现的位置* lastIndexOf 最后一次出现的位置* 形式参数列表:* 1. 源数据数组,int类型* 2. 查询的指定元素 int类型* (int[] arr, int find)* 方法声明:* public static int lastIndexOf(int[] arr, int find)*//*** 找出数组中指定元素最后一次出现的位置* * @param arr 指定的int类型源数据数组* @param find 指定需要查询的数据* @return 返回值大于等于0表示找到数据,否则返回-1*/public static int lastIndexOf(int[] arr, int find) {// 假设我们找不到对应的数据int index = -1;for (int i = arr.length - 1; i >= 0; i--) {// 找到对应元素,保存index,终止循环if (find == arr[i]) {index = i;break;}}return index;}}
1.3. 找出指定元素在指定数组中所有下标位置 【难点】
/*要求:a. 不允许在方法内打印展示b. 考虑多个数据情况c. 需要在方法外获取到下标数据信息d. 不允许使用数组作为返回值【重点】1. 尾插法思想,计数器同时也是下一次存放数据的位置2. 数组作为方法参数之后,是可以近似数据传导*/ package com.qfedu.a_array;​/*** 【重点】* * @author Anonymous*/public class Demo3 {public static void main(String[] args) {int[] arr = {5, 3, 5, 7, 5, 1, 3, 5, 7, 9};int[] indexArr = new int[arr.length];int count = allIndexOf(arr, indexArr, 5);// count是查询到的指定元素个数,同时可以利用与循环中,找到对应的元素for (int i = 0; i < count; i++) {System.out.println(indexArr[i]);}}/** 1.3. 找出指定元素在指定数组中所有下标位置 【难点】* 要求:* a. 不允许在方法内打印展示* b. 考虑多个数据情况* c. 需要在方法外获取到下标数据信息* d. 不允许使用数组作为返回值* 方法分析:* public static 不要问* 返回值类型:* int 返回找到的指定元素个数* void 不行!!!少用黑盒方法!!!* boolean true false 局限性比较大* 方法名:* allIndexOf tips:感谢雄飞同学的友情提示* 找出所有指定元素的下标位置* 形式参数列表:* 1. 查询数据的源数据数组 int[] arr* 2. 指定查询的元素 int find* 3. 和源数据数组容量一致的int类型数组,保存对应的下标位置* (int[] arr, int[] indexArr, int find)* 问题:* 1. 查询数据可能是多个!!!* 2. 数组不能作为返回值!!!* 3. 不允许打印!!!* 4. 外部获取!!!* 思考:* 1. 保存查询数据的下标位置一定会使用到数组* 2. 保存下标的数组数据类型是int类型* 解决方案:* 通过方法为参数形式传入一个数组,int类型,保存找到的下标位置* 思考:* 保存下标的数组容量如果考虑* 解决方案:* 哪怕源数据数组中所有数据都是指定的元素,最大容量也就是* 和源数据数组的容量一致【判断的地方!!!】* * 问题:* 有没有可能性下标为0的元素就是目标元素???* 0是有效下标范围* * new创建一个新的数组,int类型数组中,所有的元素初始值都是0* 任何判断0是有效下标还是无效数据???* 需求:* 这里需要一个数据,告知我找到数据到底有多少个* 返回值:* 找到的指定元素的个数,如果没有找到,返回0 * * 方法声明:* public static int allIndexOf(int[] arr, int[] indexArr, int find)**//*** 找到指定源数据数组中所有指定元素所在的下标位置,保存到indexArr中,并且返回值* 是找到的元素个数* * @param arr 源数据数组,int类型* @param indexArr 找到的下标位置存储数组,要求该数组的容量不得小于源数据容量* @param find 需要查询的指定数据* @return 返回值大于0,找到的数据个数,没有找到返回0*/public static int allIndexOf(int[] arr, int[] indexArr, int find) {// 参数合法性判断if (arr.length > indexArr.length) {System.out.println("Input Parameter is Invalid!");// 参数不合法,没有找到数据return 0;}/** 定义一个变量,* 1. 计数器,记录找到的元素个数* 2. 尾插法当中下一次存放元素的位置*/int count = 0;// 利用for循环遍历整个源数据arr数组for (int i = 0; i < arr.length; i++) {// 找到了对应的元素,需要保存下标iif (find == arr[i]) {// 保存到indexArr数组中// 需要使用尾插法!!!保存下一次存放数据的位置indexArr[count] = i; // 计数器 += 1 count += 1;}}return count;}}

错误!未指定文件名。

1.4 在指定位置插入指定元素【难点】

/*存在一个数组,数组中的元素为int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};要求1. 0是无效元素,仅占位使用2. 当前数组中【有效元素】个数为9需求在该数组中的指定下标位置放入指定元素【重点】1. 空数据,无效数据思想2. 数据的移动过程,粗加工,细打磨过程3. 时间消耗问题*/

package com.qfedu.a_array;​import java.util.Arrays;​public class Demo4 {public static void main(String[] args) {int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};add(array, 9, 20);System.out.println(Arrays.toString(array));}/*1.4 在指定位置插入指定元素【难点】存在一个数组,数组中的元素为int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};要求1. 0是无效元素,仅占位使用 ==> null2. 当前数组中【有效元素】个数为9需求在该数组中的指定下标位置放入指定元素推演过程:   在数组下标为5的位置插入元素,从下标5开始之后的元素整体向右移动   arr[9] = arr[8];   arr[8] = arr[7];   arr[7] = arr[6];   arr[6] = arr[5];   arr[5] = 20;指定下标为5的位置添加元素,数组中的元素整体向后移动的4次方法分析:public static 不要问返回值类型:void 可用,但是不建议boolean 可以 true false 选择boolean类型int 可用 返回值的含义约束较为麻烦方法名:add 添加操作形式参数列表:1. 需要插入数据的数组2. 指定插入数据的下标位置3. 指定插入的数据(int[] arr, int index, int insert);方法声明:public static boolean add(int[] arr, int index, int insert);*//*** 在指定的数组中,指定位置插入指定元素* * @param arr 指定的int类型数组* @param index 指定的下标位置,必须在合理的区间范围以内* @param insert 指定插入的元素,int类型* @return 添加成功返回true,否则返回false*/public static boolean add(int[] arr, int index, int insert) {// 参数合法性判断if (index < 0 || index > arr.length - 1) {System.out.println("Input Parameter is Invalid!");// 方法运行失败!!!return false;}/*arr[9] = arr[8];arr[8] = arr[7];arr[7] = arr[6];arr[6] = arr[5];arr[i] = arr[i - 1];arr[i + 1] = arr[i];arr[5] = 20;*/for (int i = arr.length - 1; i > index; i--) {arr[i] = arr[i - 1];}arr[index] = insert;return true;}}
1.5 删除数组中的指定下标的元素【难点】
/*存在一个数组,数组中的元素为int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};要求:1. 0是无效元素,仅占位使用需求:在当前数组中删除指定下标的元素例如:指定下标5结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0} 0占位!!!*/

package com.qfedu.a_array;​import java.util.Arrays;​public class Demo5 {public static void main(String[] args) {int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};remove(array, 9);System.out.println(Arrays.toString(array));}/*1.5 删除数组中的指定下标的元素【难点】存在一个数组,数组中的元素为int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};要求:1. 0是无效元素,仅占位使用需求:在当前数组中删除指定下标的元素例如:指定下标5结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0} 0占位!!!推理过程:   从删除位置开始,之后的元素整体向前移动,并且需要在数组原本最后一个位置上存放元素0,0是无效元素,占位使用   arr[3] = arr[4];   arr[4] = arr[5];   arr[5] = arr[6];   arr[6] = arr[7];   arr[7] = arr[8];   arr[8] = arr[9];   arr[i] = arr[i + 1];   arr[i - 1] = arr[i];   arr[9] = 0;方法分析:public static 不要问返回值类型:boolean方法名:remove形式参数列表:1. 删除数据的数组2. 指定删除数据的下标位置方法声明:public static boolean remove(int[] arr, int index)*//*** 删除数组中指定下标元素的内容* * @param arr 源数据数组,int类类型* @param index 指定删除的下标位置* @return 删除操作成功返回true,失败返回false*/public static boolean remove(int[] arr, int index) {// 参数合法性判断// index < 0 || index >= arr.lengthif (index < 0 || index > arr.length - 1) {System.out.println("Input Parameter is Invalid");return false;}/*   arr[3] = arr[4];   arr[4] = arr[5];   arr[5] = arr[6];   arr[6] = arr[7];   arr[7] = arr[8];   arr[8] = arr[9];   arr[i] = arr[i + 1];   从删除位置开始,到数组的最后一个有效元素位置结束*/for (int i = index; i < arr.length - 1; i++) {arr[i] = arr[i + 1];}// 最后一位数据赋值为0,占位,同时告知用户这是一个无效数据arr[arr.length - 1] = 0;return true;}}
1.6 找出数组中最大值元素,放到下标为0的位置
int[] arr = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10 };System.out.println(Arrays.toString(arr)); // 假设最大值的下标位置为0int index = 0; // 这里一定可以得到最大值所在的下标位置for (int i = 1; i < arr.length; i++) {                   if (arr[index] < arr[i]) {                                      index = i;                   }} // 交换数据if (index != 0) {                   int temp = arr[0];                   arr[0] = arr[index];                   arr[index] = temp;} System.out.println(Arrays.toString(arr));
1.7 接上一题,找出数组中剩余元素的最大值,放到下标为1的位置
int index1 = 1; for (int i = 2; i < arr.length; i++) {                   if (arr[index1] < arr[i]) {                                      index1 = i;                   }} if (index1 != 1) {                   int temp = arr[1];                   arr[1] = arr[index1];                   arr[index1] = temp;} System.out.println(Arrays.toString(arr));
1.8 再接上一题,找出数组中剩余元素的最大值,放到下标为2的位置
int index2 = 2; for (int i = 3; i < arr.length; i++) {                   if (arr[index2] < arr[i]) {                                      index2 = i;                   }} if (index2 != 2) {                   int temp = arr[2];                   arr[2] = arr[index2];                   arr[index2] = temp;} System.out.println(Arrays.toString(arr));
1.9 选择排序算法
package com.qfedu.a_array; import java.util.Arrays; public class Demo7 {                   public static void main(String[] args) {                                      int[] arr = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10 };                                      System.out.println(Arrays.toString(arr));                                                                            selectSort(arr);                                                                            System.out.println(Arrays.toString(arr));                   }                                      /*                    * 选择排序算法                    * 方法分析:                    *                                 public static 不要问                    *                                 返回值类型:                    *                                                    void                    *                                 方法名:                    *                                                    selectSort                    *                                 形式参数列表:                    *                                                    需要处理一个int类型数据                    *                                                    (int[] arr)                    *                     * 方法声明:                    *                                 public static void selectSort(int[] arr)                    */                                      /**                    * 选择排序算法                    *                     * @param arr 需要进行排序的int类型数据                    */                   public static void selectSort(int[] arr) {                                      // 外层循环控制核心算法的循环次数                                      for (int i = 0; i < arr.length - 1; i++) {                                                         // 从index位置开始找寻极值                                                         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;                                                         }                                      }                   }}
2. Arrays数组工具类使用
数组的工具类:                   提供了数组操作的基本方法                   sort(int[] arr);                                      经过XXX,XXX,XXX三个大牛优化的利用XXX技术完成的快速排序算法                   binarySearch(int[] arr, int find);                                      二分法查询,要求数组是有序的。                   toString(任何类型数组);                                      把数组内容作出一个String类型字符串返回值                                      {1, 3, 5, 7, 9} ==> [1, 3, 5, 7, 9]

源码请私信或下载

标签: #java如何给数组赋初值 #java数组最小值