总结
我是最棒的!基础不牢,地动山摇!
手动写Arrays中的工具类和查看API文档
常用的工具类有排序Arrays.sort();
二分查找具体值的索引Arrays.binarySearch()
打印数组 Arrays.toString();
这些方法都可以再API文档里面查找
public class ArrayUtil {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
printArray(arr);
}
/**
* 写一个方法,打印数组中的所有元素,像这种格式[1,2,3,4,5]
* @param arr
*/
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
if(i == 0){
System.out.print("["+arr[i]+",");
}else if(i == arr.length-1){
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
}
}
冒泡排序
public class BubbleSort {
/**
* 冒泡排序法
* 数组长度为length 需要排length-1轮
* 每一轮需要排length-1-i次 (i为轮数) 轮数从0开始
* @param args
*/
public static void main(String[] args) {
int[] arr = {2,5,3,1,4};
bubbleSort(arr);
// for (int i : arr) {
// System.out.print(i+" ");
// }
ArrayUtil.printArray(arr);
}
public static void bubbleSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for(int i = 0;i<arr.length-1;i++){
for(int j = 0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
// int temp = arr[j];
// arr[j]=arr[j+1];
// arr[j+1]=temp;
swap(arr, j, j+1);
}
}
}
}
//交换数组中两个元素的值
public static void swap(int[] arr,int a,int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
二分查找
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int index = binarySearch(arr, 4);
System.out.println(index);
}
/**
* 二分查找
* @param num
*/
public static int binarySearch(int[] arr,int num){
int minIndex = 0;
int maxIndex = arr.length-1;
int midIndex = (minIndex + maxIndex)/2;
while(minIndex<=maxIndex){
if(num == arr[midIndex]){
return midIndex;
}else if(num > arr[midIndex]){
minIndex = midIndex+1;
}else if(num < arr[midIndex]){
maxIndex = midIndex-1;
}
midIndex = (minIndex + maxIndex)/2;
}
return -1;
}
}
可变参数
为了解决参数变动的一类问题,比如求和或者求积
一个方法根据输入的参数动态创建数组
一个方法只能有一个可变参数,且只能在形参列表的末尾(… arr) 三个点不多也不少
public class AlterableParameter {
/**
* 可变参数,根据输入的参数动态创建数组
* 一个方法只能有一个可变参数,且只能在形参列表的末尾(... arr) 三个点不多也不少
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getSum(1,2,3,4));
int[] arr = {1,2,3,4,5};
System.out.println(Arrays.toString(arr));
}
public static int getSum(int... a){
int sum = 0;
for(int i = 0;i<a.length;i++){
sum += a[i];
}
return sum;
}
}
增强for循环
foreach适用于数组遍历
需要对数组中具体的值操作需要使用for循环
public class Foreach {
/**
* 增强for循环,适用于只遍历,不对其中的元素进行操作
* @param args
*/
public static void main(String[] args) {
int[] arr = {1,5,3,2,4};
for (int i : arr) {
System.out.println(i);
}
int[][] arr2 = new int[3][3];
for (int[] is : arr2) {
for (int i : is) {
System.out.println(i);
}
}
}
}