📖开场白
亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优秀的程序员。如果你有任何疑问或建议,请随时在评论区留言,让我们一起成长进步!现在,让我们开始这场知识之旅吧!
🚀 本人主页:三亿奶奶心中的梦
❤️ 收入专栏:JavaSE
文章目录
- 📖开场白
- 📖前言
- 📖1. 数组练习题
- 📑1.1 数组拷贝
- 📑1.2 求数组中元素的平均值
- 📑1.3 查找数组中指定元素(顺序查找)
- 📑1.4 查找数组中指定元素(二分查找)
- 📑1.5 数组排序(冒泡排序)
- 📑1.6 数组逆序
- 📖 结束语
📖前言
本章节内容是分享适合小白练习的数组题,如有错误,还请指出,感谢大家的支持💕💕💕
📖1. 数组练习题
📑1.1 数组拷贝
题目要求:将整型数组1的内容拷贝到整型数组2中
我们可以这样,代码如下:
public class DoWork {public static int[] copyOf(int[] array) {int[] array2 = new int[array.length];for (int i = 0; i < array.length; i++) {array2[i] = array[i];}return array2;}public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5};for (int k: array) {System.out.print(k + " ");}System.out.println();int[] array2 = copyOf(array);for (int k: array2) {System.out.print(k + " ");}}
输出结果:
或者是使用Java自带的方法📲📲📲
使用自带的方法更加的方便快捷
public class DoWork {public static void main(String[] args) {int[] array = {1,2,3,4,5};for (int x : array) {System.out.print(x + " ");}System.out.println();int[] array2 = Arrays.copyOf(array, array.length);for (int x : array) {System.out.print(x + " ");}}
输出结果:
📑1.2 求数组中元素的平均值
题目要求:给定一个整型数组, 求平均值
我们可以这样做: 遍历数组,对每一个数组元素进行相加并存起来
public class DoWork {public static int sum(int[] array) {int sum = 0;for (int i = 0; i < array.length; i++) {sum += array[i];}return sum;}public static void main(String[] args) {int[] array = {1,2,3,4,5}; int ret = sum(array);System.out.println("sum = " + ret);}
输出结果:
📑1.3 查找数组中指定元素(顺序查找)
题目要求:给定一个数组, 再给定一个元素, 找出该元素在数组中的位置
分析:我们只需要遍历数组中的元素,再判断是否与要找的元素是否相同
我们可以这样:
public class DoWork {public static int find(int[] array, int k) {for (int i = 0; i < array.length; i++) {if(array[i] == k) {return i;}}return -1;}public static void main(String[] args) {int[] array = {2,3,4,5,6};int arm = 3;int ret = find(array, arm);System.out.println("find = " + ret);}
输出结果:
📑1.4 查找数组中指定元素(二分查找)
对于有序的数组查找,当然是使用二分查找
我们可以简单的叙述一下:
以升序数组为例,二分查找的思路是先取中间位置的元素,然后使用待查找元素与数组中间元素进行比较:
- 如果相等,即找到了返回该元素在数组中的下标
- 如果小于,以类似方式到数组左半侧查找
- 如果大于,以类似方式到数组右半侧查找
代码方式如下:
public class DoWork {public static int binarySearch(int[] array, int k) {int left = 0;int right = array.length;int mid = 0;int flg = 0;while(left <= right) {mid = (left + right) / 2;if(array[mid] < k) {left = mid + 1;}else if(array[mid] > k) {right = mid - 1;}else {flg = 1;break;}}if(1 == flg) {return mid;}else {return -1;}}public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7,8,9,10};int key = 10;int ret = binarySearch(array, key);System.out.println("ret = " + ret);}
当 key = 10;运行结果
当 key = -10;就找不到,return -1
或者,使用Java自带的方法⬇️⬇️⬇️
使用自带的方法更加的方便快捷
public class DoWork {public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7,8,9,10};int key = 6;System.out.println(Arrays.binarySearch(array, key));}
输出结果:
如果 key = 11,找不到则输出:
这是它源码中规定的,当找不到时,return -(值 + 1)
📑1.5 数组排序(冒泡排序)
题目的要求:给定一个数组, 让数组升序 (降序) 排序
基本思路:
- 将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素
就在数组的末尾 - 依次从上上述过程,直到数组中所有的元素都排列好
实现代码如下:
public class DoWork {public static void bubbleSort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - 1 - i; j++) {if(array[j] > array[j + 1]) {int tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}public static void main(String[] args) {int[] array = {1,2,4,3,6,5,10,9,7,8};for (int i : array) {System.out.print(i + " ");}bubbleSort(array);System.out.println();for (int i : array) {System.out.print(i + " ");}}
输出结果:
或者使用Java自带的方法,非常的方便快捷
public class DoWork {public static void main(String[] args) {int[] array = {1,2,4,3,6,5,10,9,7,8};Arrays.sort(array);for (int i : array) {System.out.print(i + " ");}}
输出结果:
📑1.6 数组逆序
题目要求:给定一个数组, 将里面的元素逆序排列
代码如下:
public class DoWork {public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7,8,9,10};for (int i : array) {System.out.print(i + " ");}System.out.println();for (int i = array.length - 1; i >= 0; i--) {System.out.print(array[i] + " ");}}
输出结果:
📖 结束语
非常感谢您花时间阅读我的博客,希望我的分享能为您带来收获。如果您对本文有任何想法或疑问,欢迎在评论区留言交流。如果您喜欢我的博客,请继续关注,我会定期更新更多精彩内容。最后,别忘了行动起来的力量,让我们一起实践这些方法,见证自己的成长和进步!