九、一维数组、冒泡排序、二分法查找

1、一维数组的内存分析:

数组含义:

 1)数组是一种引用类型
 2)数组是一种简单的数据结构,线性的结构
 3)数组是一个容器,可以用来存储任意数据类型的元素
 4)数组分为:一维数组,二维数组,三维数组,多维数组
 5)数组中存储的元素类型是统一的
 6)数组长度不可改变,即数组一旦创建数组的长度是不可以改变的,是固定的

   数组中存储元素的类型是统一的,每一个元素在内存中所占的空间大小是相同的,知道数组的首元素的内部地址,要查找的元素只要知道下标就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就可以快速计算出要查找元素的内存地址,通过内存地址快速定位该元素,所以数组查找元素的效率较高

  随机的对数组进行增删元素,当增加的元素的时候,为了保证数组中元素在空间存储上是有序的,所以被加元素位置后面的所有元素都要向后移动,删除元素也是,后面所有的元素要向前移动,所以数组的增删元素的效率很低

2、二维数组:

二维数组是一个特殊的一维数组,特殊在这个一维数组中每个元素都是“一维数组”

3、冒泡排序:

是只要发生比较就交换顺序,效率比较低。从小到大排序,如果前面的数字比后面的数字大的话就交换一下顺序;

|示例|

public class MaoPaoPaixu {

   public static void main(String[] args) {
      int [] a={3,6,2,7,1};
      for(int i=a.length-1;i>0;i--){
       for(int j=0;j<i;j++){
                   if(a[j]>a[j+1]){
          int temp;
                   temp=a[j];
          a[j]=a[j+1];
          a[j+1]=temp;
       }
   }
  }
  for(int i=0;i<a.length;i++){
       System.out.println(a[i]);
    }
  }
}

4、二分法查找/折半查找

二分法查找是建立在已经排序的基础上的,并且该数组中没有重复的元素

public class ErFenFa {
   public static void main(String[] args) {
    int[] a={1,3,4,5,7,9,10,23,25,29};
    int destElement=10;
    int index= binarySearch(a,destElement);
    System.out.println((index==1)?destElement+"元素不存在":"在数组中的下标是:"+index);
 }
 //二分法查找的核心算法
   public static int binarySearch(int[] a,int destElement){
        int begin=0;
        int end=a.length-1;
      while(begin<=end){
         int mid=(begin+end)/2;
         if(a[mid]==destElement){
            return mid;
         }else if(a[mid]>destElement){
          end=mid-1;
         }else if(a[mid]<destElement){
          begin=mid+1;
         }
      }
      return -1;
   }
}

备注:用Arrays类中的sort() 方法和binarySearch()方法对int类型的数据进行排序和二分法查找

|示例|

public class ArraysTest {

   public static void main(String[] args) {
    int [] a={3,1,6,2,5};
    Arrays.sort(a);//按照升序进行排列
    for(int i=0;i<a.length;i++){
       System.out.print(a[i]);
    }
    //对升序之后的数据进行二分法查找
    int index=Arrays.binarySearch(a, 6);
    System.out.println("目标值的下标是"+index);
   }
}

posted @ 2016-12-19 21:03  爱笑的berg  阅读(217)  评论(0)    收藏  举报