1.数组遍历
/*
* 获取数组中元素,遍历
*/
int []y=new y[3];
for(int i=0;i
{
System.out.println("y["+i+"]="+y[i]+";");
}2.打印数组名,就是打印数组地址,输出格式[数组数据类型@数组首地址(哈希地址)
System.out.println(y); 输出:[I@15db97423.输出数组最大值
/*
* 需求:获取数组中的最大值
*/
public int MaxArr(int[] a) {
int max=a[0];//存放最大值
for(int i=0;i
if(a[i]>max) {
max=a[i];
}
}
return max;
}
/*
*调用MaxArr()方法,不能用数组名.,而是要用类对象.
*/
int[] arr= {10,5,9,45,2,47};
Demo d=new Demo();
int temp=d.MaxArr(arr);
System.out.println("arr数组的最大值:"+temp);
4、冒泡排序
/*
* 对给定的数组排序
* 思路:冒泡排序
* 1.外层控制进行的次数
* 2.内层来求剩余数组中的最大值
* 3.对冒泡排序优化:当某次没有数组交换时,则说明未排序数组有序,不用再比较
*/
public void busort(int a[]) {
int flag=0;
for(inti=a.length-1;i>0;i--) {
flag=0;//每次比较前,置为0
for(int j=0;j
if(a[j]>a[j+1]) {
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;//有比较,则置1
}
}
count++;
if(flag==0) {
break;//说明某次中没有调换顺序,则说明已有序
}
}
}
Demo d=new Demo();
调用: d.busort(arr); System.out.println("冒泡排序后数组数据从小到大输出如下:"); d.prinArr(arr);调用图示:
5.选择排序
/*
* 选择排序:
* 思路:
* 1.每次让未排序的第一个元素当最小值,对后面的依次比较,从而确定最小值,放在
* 这次未排序元素的第一位中。
* 2.其中涉及两个元素位置交换问题
*
*/
public void Sort(int a[]) {
int min;
int temp;
for(int i=0;i
int index=i;
min=a[i];
for(int j=i;j
{
if(a[j]
min=a[j];
index=j;
}
}
temp=a[index];
a[index]=a[i];
a[i]=temp;
}
}JAVA已经对数组排序功能实现集成了方法Arrays.sort(数组名);即可实现对数组数据从小到大排序
六、数组折半查找
/*折半查找的前提是有序
* 折半查找数组中关键字,并返回数组下标
*
*/
public int midSelect(int a[],int key) {
int low,high,mid;
low=0;
high=a.length-1;
mid=(low+high)/2;
while(a[mid]!=key&&low<=high)//low>high则是不存在该值的情况 。若有该数,则a[mid]=key
{
if(a[mid]>key) //在mid左面比较
{
high=mid-1;
}
else if(a[mid]
{
low=mid+1;
}
mid=(low+high)/2;//下一次判断是否够该数做准备
}
low可以作为向有序数组插入数据的位置(画图理解)
//返回下标或者-1
if(a[mid]==key) {
return mid;}
else
return -1;