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