数组
有一组相同数据类型的数据.
数据类型[] 数组名称=new 数据类型[长度]; //为该数组开辟空间.
数据类型[] 数组名称={值,值};
求数组的长度 数组名称.length;
获取数组中的指定位置的元素. 数组名称[下标] 下标从0开始到数组名称.length-1;
获取数组中每个元素:通过循环.
经典算法:
选择排序和冒泡排序
1 public class HomeWork{ 2 //选择排序和冒泡排序 3 public static void main(String[] args) { 4 //冒泡排序 5 int[]nums=new int[10]; 6 for (int i = 0; i < args.length-1; i++) { 7 for (int j = 0; j < args.length-i-1; j++) { 8 if (nums[j]>nums[j+1]) { 9 int temp=nums[j]; 10 nums[j]=nums[j+1]; 11 nums[j+1]=temp; 12 } 13 } 14 } 15 //选择排序 16 for (int i = 0; i < args.length; i++) { 17 for (int j = i+1; j < args.length; j++) { 18 if (nums[i]>nums[j]) { 19 int temp=nums[i]; 20 nums[i]=nums[j]; 21 nums[j]=temp; 22 } 23 } 24 } 25 } 26 }
顺序查找:
1 public class 顺序查找 { 2 public static void main(String[] args) { 3 int [] arr={23,34,12,35,6,2,56}; 4 Arrays.sort(arr); 5 int num=56; 6 for(int i=0;i<arr.length;i++){ 7 if(arr[i]==num){ 8 System.out.println("该数在数组中存在."); 9 break; 10 } 11 if(i==arr.length-1){ 12 System.out.println("该数不存在"); 13 } 14 } 15 } 16 }
折半查询(二分查找):前提是排好序的数组
1 public class 折半查找 { 2 public static void main(String[] args) { 3 int [] arr={2,5,6,8,45,56,67,100}; 4 Arrays.sort(arr);//排序 5 int num=7; 6 int max=arr.length-1;//最大数的下标 7 int min=0;//最小数的下标 8 while(max>=min){ 9 int mid=(max+min)/2;//中间数的下标 10 if(num>arr[mid]){ 11 min=mid+1; 12 }else if(num<arr[mid]){ 13 max=mid-1; 14 }else{ 15 System.out.println("该数存在."); 16 break; 17 } 18 } 19 } 20 }
Java新特性对数组的支持
可变参和增强循环
1 public class NewTeDian { 2 public static void main(String[] args) { 3 //1.int a=(int)(Math.random()*11+10);//[0,1) 10 ---> 20 4 int [] arr={1,34,45,67,32}; 5 for(int a:arr){//增强循环 (与下标无关). 1.5以后具有 6 System.out.print(a+" "); 7 } 8 //2.Syntax error, 'for each' statements are only available if source level is 1.5 or greater 9 String str=fun(2,34,546,6); 10 System.out.println(str); 11 } 12 13 public static String fun(int... acc){ 14 for(int a:acc){ 15 System.out.print(a+"-->"); 16 } 17 18 return "我回来了"; 19 } 20 }