Java语言基础-Day04
1 . 数组格式
int[] arr = new int[2]; int arr[] = new int[2]; int[] arr = new int[]{1,3,4,5} int[] arr = {1,3,4,5}
2 . 操作时候常见问题
3 . 数组的操作
获取数组的元素,遍历。
int[] arr = new int[3]; for(int x=0;x<3;x++) { System.out.println(arr[x]); } int[] arr = {1,3,5,3,4,6} for(int x=0;x<=arr.length;x++) { if(x != arr.length;x++) System.out.println(arr[x]+","); else System.out.println(arr[x]); }
获取数组中的最大值
思路:
1,获取最值需要进行比较。每一次比较都会有一个较大的值。
因为该值不确定,通过一个变量进行存储。
2,让数据中的每一个元素都和这个变量的值进行比较。如果大于变量
中的值,就用改变量记录较大的值。
3,当所有元素都比较完成,那么该变量中储存的就是数组中的最大值了。
public static int getMax(int[] arr) { int max = 0 ; //角标 for(x=1;x<arr.length;x++) { if(arr[x] > arr[max]) max = x; } return arr[max]; }
数组的排序 Arrays.sort(arr);
从大到小排列
public staitc 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 temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
冒泡排序:相邻的两个元素进行比较 如果符合条件换位。
public staitc void bubbleSort(int[] arr) { for (int x=0; x<arr.length-1 ; x++) { for(int y=0; y<arr.length-x-1 ; y++)//-x:让每一次比较的元素减少, -1:避免角标越界。 { if(arr[y] > arr[y+1]) { int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } } }
位置置换功能抽取
public static void sort(int[] arr , int a , int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
查找操作
1,折半查找
public static int halfSearch(int[] arr , int key) { int min,max,mid; min = 0; max = arr.length-1; mid = (max+min)/2; while(arr[mid] != key ) { 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; }
2,折半查找 第二种
public static int halfSearch_2(int[] arr , int key ) { int min = 0,max = arr.length-1,mid; while (min <= max) { mid = (max+min)>>1; if(key >arr[mid]) min = mid + 1; else if (key< arr[mid]) max = mid -1; else return mid; } return -1;( return min; 结果:有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的。) }
3 . 十进制--->二进制
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()); }
4 . 十进制--->十六进制
public static void toHex(int num) { StringBuffer sb = new StringBuffer(); for (int x=0; x<8; x++) { int temp = num & 15; if(temp > 9) sb.append((char)(temp-10+'A')); else sb.append(temp); num = num >>>4; } System.out.println(sb.reverse()); }
查表法获取内容
0 1 2 3 4 5 6 7 8 9 A B C D E F 十六进制
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 角标
进制转换优化
/* 十进制 转 二进制 */ public static void toBin(int num) { trans(num,1,1); } /* 十进制 转 八进制 */ public static void toEight(int num) { trans(num,7,3); } /* 十进制 转 十六进制 */ public static void toHex(int num) { trans(num,15,4); } 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]); } }
5 . 二维数组
int[][] arr = new int[][]; int[][] arr = {{1,3,2,3},{2,5,3,8},{2,9,8,0}}
未完>>待续
作者:胖胖的ALEX
出处:http://www.cnblogs.com/zanbin/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/zanbin/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号