一、数组作为方法的返回值。
代码例子:
1、数组转字符串:
public static String myToString(int[] array ) { //以字符串形式打印数组 if (array == null) return "null"; if (array.length == 0 ) return "[]"; String ret = "["; for (int i = 0; i < array.length; i++) { ret = ret + array[i] ; if (i != array.length - 1) { ret = ret + ","; } } ret = ret + "]"; return ret; } public static void main1(String[] args) { int [] array = {1,2,3,4,5}; System.out.println(myToString(array)); } }
2、求数组平均值。
public static void main4(String[] args) { //求数组元素平均值 int []array = {1,2,3,4,5}; System.out.println(max(array)); } public static double avg(int []array) { int sum = 0; for (int i = 0; i < array.length; i++) { sum += array[i]; } return sum*1.0 / array.length; } public static void main2(String[] args) { int []array = {1,2,3,5}; System.out.println(avg(array)); }
3、在数组中找出最大值
public static int max(int[]array) { //在数组中找出最大值 int max = array[0]; for ( int i = 1; i < array.length; i++) { if (max < array[i]) { max = array[i]; } } return max; } public static void main(String[] args) { //求数组元素平均值 int []array = {1,2,3,4,5}; System.out.println(max(array)); }
二、 查找数组中指定元素
1、二分查找
public static int binarySearch1(int[] array,int key) { //二分查找 int i = 0; int j = array.length - 1; while(i <= j) { int mid = (i + j) / 2; if (array[mid] < key) { i = mid + 1; } else if (array[mid] > key) { j = mid - 1; }else { return mid; } } return -1; } public static void main5(String[] args) { int []array = {1,2,3,4,5,6}; System.out.println( binarySearch1(array,6)); }
2、冒泡排序
public static void bubbleSort1(int[] array) { //冒泡排序 for (int i = 0; i < array.length-1; i++) { boolean flg = false; for (int j = 0; j < array.length-i-1; j++) { if (array[j]>array[j+1]) { int tmp = array[j]; array[j] = array[j+1]; array[j+1] = tmp; flg = true; } } } } public static void main8(String[] args) { int []array = {1,3,2,4,6,5}; bubbleSort1(array); System.out.println(Arrays.toString(array)); }
三、检查数组的有序性
public static boolean func(int[] array) { //判断该数组元素是否升序 for (int i = 0; i < array.length-1; i++) { if (array[i] >array[i+1] ) { return false; } } return true; } public static void main7(String[] args) { int []array = {1,2,3,4,5}; System.out.println(func(array)); }
四、
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
public static int numOne(int []array) { int ret = 0; for (int i = 0; i < array.length; i++) { ret = ret ^ array[i]; } return ret; } public static void main10(String[] args) { int [] array = {1,2,3,3,2,1,4,4,5}; System.out.println(numOne(array)); }
五、给你一个整数数组 arr
,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true
;否则,返回 false
。
public static boolean fanUs(int []array) { for (int i = 0; i < array.length - 2; i++) { if ((array[i] % 2 != 0) && (array[i+1] % 2 != 0) && (array[i+2] % 2 != 0 ) ) { return true; } } return false; } public static void main9(String[] args) { int []array = {1,8,5,7,9,2,4}; System.out.println(fanUs(array)); }
六、给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
public static int[] fan(int [] nums,int target) { int [] array = new int[2]; for (int i = 0; i < nums.length ; i++) { for (int j = i + 1; j < nums.length ; j++) { if (nums[i] + nums[j] == target) { array[0] = i; array[1] = j; } } } return array; } public static void main15(String[] args) { int []nums = {12,12,13,14,15}; System.out.println(Arrays.toString(fan(nums,24))); }
七、实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组
public static int [] copyOf(int [] array) { int [] ret = new int[array.length]; for (int i = 0; i < array.length; i++) { ret [i] = array [i]; } return ret; } public static void main18(String[] args) { int [] array = {1,3,7,8,12,15}; System.out.println(Arrays.toString(copyOf(array))); }
八、在一组数组中,使奇数位于偶数之前,大小顺序不用考虑。
class Test { public static int [] sorNum(int [] array) { int i = 0; int j = array.length - 1; while (i < j && array[i] % 2 != 0) { i++; } while (i < j && array[j] % 2 == 0) { j--; } int tmp = array[i]; array[i] = array[j]; array[j] = tmp; return array; } public static void main19(String[] args) { int [] array = {1,2,3,4,5,6,7}; System.out.println(Arrays.toString(sorNum(array))); }