数组
一维数组
- 一维数组的声明与初始化
| int num; |
| num = 10; |
| int id = 1001; |
| |
| int[] ids; |
| |
| ids = new int[]{1001,1002,1003,1004} |
| |
| String[] names = new String[5]; |
| int[] arr4 = {1,2,3,4,5}; |
- 一维数组的引用:通过角标的方式调用(角标或索引从0开始的,到数组长度-1结束。)
- 数组的属性:length。说明:数组一旦初始化,其长度就是确定的。arr.length 数组长度一旦确定,就不可修改
- 一维数组的遍历
- 数组元素的默认初始化值:
整型:0
浮点型:0.0
char型:0或'\u0000'而非'0'
boolean型:false
引用数据类型: null
二维数组
- 如何理解二维数组? 数组属于引用数据类型,数组的元素也可以是引用数据类型,一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。
| |
| int[] arr = new int[]{1,2,3}; |
| |
| int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}}; |
| |
| |
| |
| |
| |
| |
| |
| |
| String[][] arr2 = new String[3][2]; |
| |
| String[][] arr3 = new String[3][]; |
| |
| int[] arr4[] = new int[][]{{1,2,3},{4,5,8,10},{6,7,3}}; |
| int[] arr5[]={{1,2,3},{4,5},{6,7,8}}; |
数组中常见的算法
| |
| |
| int[][] yangHui = new int[10][]; |
| |
| for(int i = 0;i<yangHui.length;i++){ |
| yangHui[i] = new int[i+1]; |
| |
| yangHui[i][0] = yangHui[i][i] = 1; |
| |
| |
| for(int j = 1;j<yangHui[i].length-1;j++){ |
| yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j]; |
| } |
| |
| |
| for(int i = 0;i<yangHui.length;i++){ |
| for(int j = 0;j<yangHui[i].length;j++){ |
| System.out.println(yangHui[i][j]+" "); |
| } |
| System.out.println(); |
| } |
| } |
| |
| |
| int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333}; |
| |
| int dest1 = -34; |
| int head = 0; |
| int end = arr2.length-1; |
| boolean isFlag1 = true; |
| while(head<=end){ |
| int middle = (head + end)/2; |
| if(dest1 == arr2[middle]){ |
| System.out.println("找到了指定元素:位置为:"+middle); |
| isFlag1 = false; |
| break; |
| }else if(arr2[middle]>dest1){ |
| end = middle-1; |
| }else{ |
| head = middle+1; |
| } |
| if(isFlag1=true){ |
| System.out.println("很遗憾,没有找到"); |
| } |
| } |
- 数组中涉及到的常见的排序算法:
- 十大内部排序算法
- 选择排序(直接选择排序、堆排序)
- 交换排序(冒泡排序、快速排序)
- 插入排序(直接插入排序、折半插入排序、Shell排序)
- 归并排序
- 桶式排序
- 基数排序
| |
| |
| |
| |
| |
| |
| public class BubbleSortTest{ |
| public static void main(String arg[]){ |
| int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99}; |
| |
| for(int i = 0;i<arr.length-1;i++){ |
| for(int j = 0;j<arr.length-1-i;j++){ |
| if(arr[j]>arr[j+1]){ |
| int temp = arr[j]; |
| arr[j] = arr[j+1]; |
| arr[j+1]=temp; |
| } |
| } |
| } |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| private static void subSort(innt[] data,int start,int end){ |
| if(start<end){ |
| int base = data[start]; |
| int low = start; |
| int high = end+1; |
| while(true){ |
| while(low<end&&data[++low]-base<=0) |
| ; |
| while(high>start&&data[--high]-base>=0) |
| ; |
| if(low<high){ |
| swap(data,low,high); |
| }else{ |
| break; |
| } |
| } |
| swap(data,start,high); |
| subSort(data,start,high-1); |
| subSort(data,high+1,end); |
| } |
| } |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~