* 数组其实就是一个容器,可以自动给数组中的元素编号0~n,方便操作元素 * 定义格式:元素类型[] 数组名 = new 元素类型[元素个数或数组长度]
数据明确的情况下:例,int[] arr = new int[]{1,2,3,4,9,7}
public class ArrayDemo {
public static void main(String[] args) { // TODO Auto-generated method stub int[] x = new int[3]; int[] y = x;//x相当于把自己的地址赋给了y,所以x与y共享地址,对x操作的同时也是对y操作 //如果是new的,会重新开辟一个空间,一个新的地址,数组的地址即第一个元素的地址 y[1] = 99; System.out.println(x[1]); x = null;//x数组清空后,地址不再被x所用 System.out.println(y[1]); int[] arr = new int[]{1,8,3,4,9,7,2,5,6}; int[] arr1 = new int[]{1,3,5,7,9,11,13,15,17,19,21}; //排序前 System.out.print("排序前的数组:"); printArray(arr); //排序(冒泡排序) bubbleSort(arr); System.out.println(); //排序后 System.out.print("排序后的数组:"); printArray(arr); System.out.println(); //交换数组中某两个元素的位置 swap(arr,2,4); System.out.print("交换位置后的数组:"); printArray(arr); System.out.println(); //查找元素所在位置:查找成功返回相应索引号,查找失败返回-1 //1.遍历查找(不在乎是否排序) int index = getIndex(arr,3); System.out.println("元素3所在位置:"+index); //2.折半查找(要求数组已排好序) //方法1: int index1 = halfSearch(arr1,5); System.out.println("方法1:5所在的位置:"+index1); //方法2: int index2 = halfSearch_1(arr1,5); System.out.println("方法2:5所在的位置:"+index2); } //---------------------------------------------------- //冒泡排序:相邻的两个元素进行比较,符合条件就互换位置 public static void bubbleSort(int[] arr){ for(int n=0;n<arr.length-1;n++){ for(int m=0;m<arr.length-n-1;m++){//-n:让每一次比较的元素减少,-1:避免角标越界 if(arr[m]>arr[m+1]){ int temp = arr[m]; arr[m] = arr[m+1]; arr[m+1] = temp; } } } } //------------------------------------------------------------- //遍历打印数组 public static void printArray(int[] arr){ System.out.print("("); for(int i=0;i<arr.length;i++){//遍历数组 if(i!=arr.length-1){ System.out.print(arr[i]+","); }else { System.out.print(arr[i]+")"); } } } //---------------------------------------------------------------- //数组中两个元素交换位置 public static void swap(int[] arr,int a,int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } //----------------------------------------------------------------- //数组的查找,获取key第一次出现在数组中的位置,如果返回是-1,那么代表该key在数组不存在 public static int getIndex(int[] arr,int key){ for(int l=0;l<arr.length;l++){ if(arr[l]==key) return l; } return -1; } //-------------------------------------------------------------------- //折半查找1:提高效率,前提是该数组是有序的数组 public static int halfSearch(int[] arr,int key){ int min,max,mid; min = 0; max = arr.length-1; mid = (arr.length)/2; while(arr[mid]!=key){ if(key>arr[mid]){ mid = 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_1(int[] arr,int key){ int min = 0; int max = arr.length-1; int 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; }
}