黑马程序员_学习笔记第4天——数组

来源:互联网 发布:金山软件客服电话 编辑:程序博客网 时间:2024/06/05 03:41
---------------------- ASP.Net+Android+IOS开发、href="http://edu.csdn.net"target="blank">.Net培训、期待与您交流! ----------------------

1、数组中有一个属性可以直接获取到数组元素个数:length

使用方式:数组名称.length

2、存在两种RunntimeException

ArrayIndexOutOfBoundsException 数组角标越界异常

NullPointerException 空指针异常

3、数组的遍历操作

int[] arr = new int [3];for(int x= 0;x<arr.length;x++){sop("arr["+x+"]="+arr[x]+";");}

4、打印方法

public static void print(int[] arr) {System.out.print("[");for (int x = 0; x<arr.length; x++) {if (x!=arr.length-1)System.out.print(arr[x]+",");else System.out.print(arr[x]);}System.out.println("]");}


5、获取数组中的最值

最大值:

public static void getMax(int[] arr) {int max=arr[0];for (int x=1;x<arr.length;x++) {if (arr[x]>max) {max = arr[x];}}System.out.println(max);}

第二种方法

public static void getMax2(int[] arr) {int max=0;for (int x=1;x<arr.length;x++) {if (arr[x]>arr[max]) {arr[max] = arr[x];}}System.out.println(arr[max]);}

最小值 改变下符号即可

6、选择排序和冒泡排序

选择排序:

public static int[] 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 temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}}return arr;}

冒泡排序:

public static int[] 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 temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}return arr;}

7、查找数组中第一次出现的目标值的角标

public static int getIndex(int[] arr, int key) {for (int x =0; x<arr.length; x++) {if (arr[x]==key) {return x;}}return -1;}

8、折半查找

public static int halfSearch(int[] arr ,int key) {int min=0, max=arr.length-1,mid;while(min<=max) {mid=(max+min)/2;if (key>arr[mid]) min=mid+1;else if (key<arr[mid]) max=mid-1;else return mid;}return -1;}


方法二:

public static int halfSearch_2(int[] arr ,int key) {int min=0, max=arr.length-1,mid=(max+min)/2;while(key!=arr[mid]) {if (key>arr[mid]) min=mid+1;else if (key<arr[mid]) max=mid-1;if(min>max) return -1;mid=(max+min)/2;}return mid;}


9、十进制转二进制

public static void toBin(int num) {StringBuffer sb = new StringBuffer();while (num > 0) {sb.append(num%2);num = num/2;}System.out.println(sb.reverse());}


10、用查表法十进制转十六进制

public static void toHex_2(int num) {char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[8];int pos = arr.length;while (num!=0) {int temp = num & 15;arr[--pos] =chs[temp];num = num>>>4;}System.out.println("pos="+pos);for(int x=pos;x<arr.length; x++) {System.out.print(arr[x]+",");}}

11、十进制转成任意进制

public static void trans(int num, int base, int offset) {if(num == 0) {System.out.println(0);return;}char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[32];int pos = arr.length;while (num!=0) {int temp = num & base;arr[--pos] = chs[temp];num = num>>>offset;}for (int x = pos; x<arr.length; x++) {System.out.print(arr[x]);}}

12、二维数组

int[][] arr = new int[3][2];

arr.length;//打印的是二维数组的长度

arr[0].length;//打印的是二维数组中的第一个一维数组的长度

三种定义方式:

int[][] x;  int x[][];   int[] x[];

若定义int[]x,y[];  则x是一维的,y是二维的


---------------------- ASP.Net+Android+IOS开发、href="http://edu.csdn.net"target="blank">.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
原创粉丝点击