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