Java基础--数组
来源:互联网 发布:从零开始学java 编辑:程序博客网 时间:2024/06/06 04:31
1、数组定义
int[] arr = new int[1024];也可以int arr[] = new int[1024];(C++是这种方式, Java推荐上一种)
2、for循环遍历
class ArrayDemo{ public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8}; for (int x=0; x<arr.length; x++) { System.out.println("arr["+x+"]="+arr[x]+";"); } }}//很基础很简单
不能用这种方式打印System.out.println(arr);
打印出的是数组arr的哈希地址。乍一看以为乱码。
3、另一种思路求最值
另一种思路求最大值/最小值:
public static int getMax2(int[] arr) { int max = 0; //利用数组的角标记录最大值 for (int x=1; x<arr.length; x++) { if(arr[x]>arr[max]) max = x; } return arr[max]; }
4、选择排序:
第一个元素挨个与后面比较,一轮结束最小/大值的排在首位。依次比较第二位元素至末尾,最后比较n-1与n位。
public static void selectSort(int[] arr) { for (int x=0; x<arr.length-1; x++) { for (int y=x+1; y<arr.length; y++) { if(arr[x] > arr[y]) { int tem=0; tem = arr[x]; arr[x]=arr[y]; arr[y]=tem; } } }}
5、冒泡排序:
相邻两元素比较,1和2, 2和3,。。。n-1和n。一轮结束最小/大值到最后,再下一轮排列1到n-1。
public static void bubbleSort(int[] arr) { for (int x=0; x<arr.length-1; x++)//外层循环理解为需要多少个内层循环。 { for (int y=0; y<arr.length-x-1; y++) { if(arr[y] > arr[y+1]) { int tem=0; tem = arr[y]; arr[y]=arr[y+1]; arr[y+1]=tem; } } } }
以上方法好记,但是效率不高,因为是数组。可以改进方法使用角标index。实际开发使用的是java.util.* 包的功能Array.sort(arr);
6、折半查找:前提是数组是有序排列
原理:查找的元素每次都跟中间角标数组元素比较,若小于则查找左边, 若大于则查找右边,一层层深入。衍生应用,在顺序数组中插入一值,保持排序。代码示例:
public static int halfSearch(int[] arr, int key) { int max, min, mid; min = 0; max = arr.length-1; mid = (min+max)/2; while (key != arr[mid]) { if (key < arr[mid]) { max = mid-1; } else if (key > arr[mid]) { min = mid+1; } if(min>max)//此处判断超出范围 return -1; mid = (min+max)/2; } return mid; }
7、以数组的方式转换16进制。
public static void toHex2(int num){ char[] chs = {'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'}; char[] ret = new char[8]; int pos = 0; while(num != 0) //这里用while的目的是判断num为零后就不再存储,这样取出时就没有0的数。 { int tem = num & 0xf; ret[pos++]=chs[tem]; System.out.println(chs[tem]); num = num >>> 4; } for (int i=pos-1; i>=0; i--) { System.out.print(ret[i]+","); }}
0 0
- 【Java基础】Java数组
- java基础 ---数组
- java中数组基础
- java基础----数组
- Java基础:数组
- Java基础之数组
- Java基础之数组
- Java基础_数组
- JAVA基础:一元数组
- Java基础之数组
- Java基础<四>---> 数组
- Java基础_数组
- java数组基础
- Java基础_数组
- java基础__数组
- 【java基础】[数组]
- Java基础-数组
- Java基础:数组
- 二叉树后序遍历
- Java流
- linux gcc 编译
- JavaScript事件绑定
- 二叉树层序遍历
- Java基础--数组
- GDB 命令详细解释
- 安卓多线程分段下载文件
- Mac安装Brew和ActiveMQ
- 【特种兵PPT教程】如何给PPT插入、删除背景音乐?
- 常见网络命令的使用
- java中的线程(一)——线程的五种状态和线程的创建方式
- Android 自定义圆形头像(简单的画出来,不需要自定义view)
- error: The following untracked working tree files would be overwritten by merge: linjulu/.DS_Store