冒泡排序与二分法查找及for循环增强

冒泡排序

我的理解:

  用到双重循环,数组的长度多少,外循环就循环多少次。10个数组,外循环就循环10次。把双重循环看成行和列,外循环是行,内循环是列。

第一次由外循环进入内循环。10个元素要比较9次。

第二次由外循环进入内循环。要比较8次。

第三次由外循环进入内循环。要比较7次。

以此类推

总会把你想要的最大数或最小数放到最后一个位置,接着这个数不用再做比较,因此,内循环的次数依次减少(数组的长度-1-i)

内循环实现换位就ok了。

(我理解的好土。。。。。。。。。。。。哈哈!)

代码示例

package cn.array2;

import java.util.Arrays;

public class Maopao {
    public static void main(String[] args) {
        int[]b= {5,8,7,2,6,1,5};
        sort(b);
        System.out.println(Arrays.toString(b));
    
}
    public static void sort(int[] a) {
        int temp;
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length-1-i; j++) {
                if(a[j]<a[j+1]) {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
                
            }
        }
        
    }
}

 

二分法查找(使用它时首先要用sort()对数组排序)(查找速度很快)

 

package cn.array2;

import java.util.Arrays;
//import java.util.Arrays;

public class Array {
    public static void main(String[] args) {
        int []a= {45,8,2,38,9,8,2,22,1};
        Arrays.sort(a);                                              //使用二分法查找,必须先对数组进行排序
        System.out.println(Arrays.toString(a));                      //toString 跟Object的toString什么关系
        System.out.println("该元素的索引:"+Arrays.binarySearch(a,22));//二分法查找,返回索引值,如果没有返回负的(没找到)
        Arrays.fill(a,2,4,125);                                      //数组填充,末位不填充
        System.out.println(Arrays.toString(a));
        
    }
}

结果:

增强版for循环(遍历数组很方便)

package cn.array2;

public class Test {
    public static void main(String[] args) {
        int [] a= {45,4,58,1,5,56,4,45,5,4};
        for(int i=0;i<a.length;i++) {
            int m=a[i];
            System.out.print(m+"\t");
        }
        System.out.println();
        
        //增强版for循环
        
        for(int n:a) {
            System.out.print(n+"\t");
        }
        
    }
}

 

posted on 2019-07-18 11:33  Mentality  阅读(467)  评论(0编辑  收藏  举报