时间:2021-05-19
一维数组
1.一维数组的定义方式:
int[] array1 = new int[3];//声明创建一个包含3个元素的数组array1(初始值为0)int[] array2 = {1, 2, 3};//声明、创建并初始化一个包含3个元素的数组int[] array3 = new int[] {1, 2, 3};//声明、创建并初始化一个包含3个元素的整型数组int[] array4;array[4] = {1, 2, 3}//先声明一个数组array,再进行创建及初始化int[] array5 = new int[3];array5[0] = 1;array5[1] = 2;array5[2] = 3;//先声明、创建一个具有3个元素的数组,再用赋值语句进行初始化2.利用一维数组输出斐波那契数列的前20项
public static void fib(int[] array) { array[0] = 1; array[1] = 1; for (int i = 2; i < array.length; i++) { array[i] = array[i - 1] + array[i - 2]; } System.out.println(Arrays.toString(array));}//记得在主函数中创建array数组题目练习
1.实现二分查找算法:有序的数组
public class TestDemo1 { public static int binary(int[] array, int key) {//key为要查找的数 Arrays.sort(array);//正序排列数组 System.out.println("由从小到大顺序排列数组:" + Arrays.toString(array)); int left = 0; int right = array.length - 1;//将数组最小下标与最大下标分别赋值给left和right int mid = 0;//将中值初始化 while (left <= right) {//“=”条件防止当输入的值为数组最大下标指向的数时,不进入循环,而返回-1的情况 mid = (left + right) / 2;//二分法原理为折半查找,故中间值为左右下标之和除以2 if (key == array[mid]) {//如果第一次中间下标指向的值正好等于要查找的值,返回该下标 return mid; } else if (key > array[mid]) {//如果如果输入的值大于中间下标指向的值,则将当前中值下标作为下一次循环的左下标 left = mid + 1; } else {//只剩下输入的数下标小于中值下标的情况,将当前中值下标作为下次循环的右下标 right = mid - 1;//与“+1”含义类似,防止输入的数对应的为最右下标 } } return -1;//在数组中找不到输入的数,返回-1 } public static void main(String[] args) { int[] array = {22, 15, -46, 35, 69, 20}; System.out.println("请输入你想查找的数字:"); Scanner scanner = new Scanner(System.in); int key = scanner.nextInt(); System.out.println(binary(array, key)); }}2.求连续子数组的最大和
public class TestDemo1 {public static void sumArray(int[] array) { int sum = array[0];//对数组求和的变量 int max = array[0];//求和最大值的变量 for (int i = 1; i < array.length; i++) {//从第一项开始循环 if (sum + array[i] < array[i]) {//如果前几项的和与本项之和小于本项,则最大连续子数组的和肯定不包括前几项 sum = array[i];//将本项的值赋给sum,之后的循环求和从本项依次向后相加 } else { sum = sum + array[i];//如果前几项的和与本项之和大于本项,则继续向后执行递加操作 } if (sum >= max) {//每次相加之后与初始的max值相比较,如果和大于max的值,则更新max,最后返回的max值即为最大连续子数列的和 max = sum; } } System.out.println("连续子数组最大和为:" + max); } public static void main(String[] args) { int[] array = {1, -2, 3, 10, -4, 7, 2, -5}; sumArray(array); }}3.交换两个数
public class TestDemo1 { public static void swap(int a,int b) { int tmp = 0; tmp = a; a = b; b = tmp; } public static void main(String[] args) { int a = 10; int b = 20; swap(a,b); System.out.println(a); System.out.println(b); }}用上面写的方法在执行交换两个数操作数会出现错误,原因:
在主函数中swap(a,b)操作实际是将实参a,b的地址拷贝到swap方法中,即传址。在swap方法中进行数值交换操作时只是交换了该方法中形参的地址,而原本实参的地址并没有改变,所以输出的a,b值没有发生改变。
Java中的基本元素不支持传址,必须是对象或者数组才能传址
可作如下修改
4.逆置数组
public class TestDemo1 { public static void invertArray(int[] array) { System.out.println("输出该数组:" + Arrays.toString(array)); for (int front = 0, end = array.length - 1; front < end; front++, end--) {//循环将数组下标由第一项递增,最后一项递减,当递增的下标超过递减的下标时,结束循环 int temp = array[front];//将数组的第一个元素临时赋值给变量temp array[front] = array[end];//将数组最后的元素赋值到数组的第一个元素 array[end] = temp;//将temp的值赋给数组最后的元素,实现数组下标不变,但元素的值进行倒置的操作 } System.out.println("将该数组倒置后输出:" + Arrays.toString(array)); } public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; invertArray(array); }}以上就是关于java一维数组及练习题的全部知识点内容,感谢大家的阅读和对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言练习题:求1到10的阶乘之和简单实例?12345678910111213141516171819202122#includeintfactorial(in
在学习集合框架的时候,初学者很容易练习到学生管理系统、雇员管理体统等练习题。在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习
这里给大家分享的是一个学习canvas的时候做的画空心圆与实心圆的练习题,非常简单。复制代码代码如下:varcanvas=document.getElement
本文实例讲述了Python实现的摇骰子猜大小功能小游戏。分享给大家供大家参考,具体如下:最近学习Python的随机数,逻辑判断,循环的用法,就想找一些练习题,比
前言本文主要给大家分享了一些简单的Python练习题,对学习python的新手们来说是个不错的练习问题,下面话不多说了,来一起看看详细的介绍吧。第一题:使用wh