(13)数组操作:遍历、输出最大值、冒泡排序、选择排序,java已有的排序方法、折半查找

来源:互联网 发布:洋葱英语软件 编辑:程序博客网 时间:2024/05/23 13:32

1.数组遍历

/* * 获取数组中元素,遍历 */        int []y=new y[3];         for(int i=0;i<y.length;i++) //数组名.length获取数组长度,其他不能用数组名.调用        {         System.out.println("y["+i+"]="+y[i]+";");         }         
2.打印数组名,就是打印数组地址,输出格式[数组数据类型@数组首地址(哈希地址)
    System.out.println(y);     输出:[I@15db9742

3.输出数组最大值

/* * 需求:获取数组中的最大值 */public int MaxArr(int[] a) {int max=a[0];//存放最大值for(int i=0;i<a.length;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(int i=a.length-1;i>0;i--) {  flag=0;//每次比较前,置为0for(int j=0;j<i;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<a.length;i++) {int index=i;min=a[i];for(int j=i;j<a.length;j++) //找到最小值和最小值下标                       {if(a[j]<min) {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]<key)//在mid右面比较{low=mid+1;} mid=(low+high)/2;//下一次判断是否够该数做准备   }         low可以作为向有序数组插入数据的位置(画图理解)       //返回下标或者-1        if(a[mid]==key) {        return mid;}        else         return -1;





















阅读全文
0 0
原创粉丝点击