数组的高级应用:

数组的高级应用主要有排序和二分查找:

数组常见的排序:主要有冒泡排序和选择排序

一.冒泡排序:

冒泡排序的原理:相邻的两个元素比较,大的放在后面,小到放在前面,比较的躺输是数组的个数减1;,具体的实现过程看代码:

package array;

  public class Demo1 {
       public static void main(String[] args) {
              int[] array={1,5,9,2,3,5,6,4,6,15,88};
                 for(int i=0;i<array.length-1;i++){
                      for(int j=0;j<array.length-1-i;j++){
                           if(array[j]>array[j+1]){
                                  int temp=array[j];
                                  array[j]=array[j+1];
                                  array[j+1]=temp;
                              }
                        }
               }
              System.out.println("冒泡排序的顺序");
                 for(int i=0;i<array.length;i++){
                 System.out.print(array[i]+",");
        }
     }
}

解析:外层for循环控制的比较躺输.内层for循环控制的个比较的次数,

二.选择排序:

选择排序的原理:

依次拿某个位置上的元素和后面的左右元素比较大小,大的放在后面,每次确定的就是此位置上的元素,比较的躺输就是元素的个数减1.

package array;

扫描二维码关注公众号,回复: 3080331 查看本文章

   public class Demo1 {
     public static void main(String[] args) {
       int[] array={1,5,9,2,3,5,6,4,6,15,88};
        for(int i=0;i<array.length-1;i++){
              for(int j=i+1;j<array.length;j++){
                    if(array[i]>array[j]){
                        int temp=array[i];
                        array[i]=array[j];
                       array[j]=temp;
                 }
              }
         } 
             System.out.println("选择排序的顺序");
               for(int i=0;i<array.length;i++){
               System.out.print(array[i]+",");
           }
        }
}

解读:外层for循环控制的是比较的论述,内层for比较的元素元比较的次数

二分查找:

  package array;
   public class Demo1 {
      public static void main(String[] args) {
              int value=0;
           int[] array={1,5,9,2,3,5,6,4,6,15,88};
            for(int i=0;i<array.length-1;i++){
                for(int j=i+1;j<array.length;j++){
                       if(array[i]>array[j]){
                       int temp=array[i];
                         array[i]=array[j];
                        array[j]=temp;
               }
           }
       }
//使用二分查找的前提就是这个数组是有序的(从小到大)
            int min=0;
            int max=array.length-1;
            int mid=(min+max)/2;
                 while(min<=max){
                        if(array[mid]>value){//说明落在了左边
                               max=mid-1;
                         }else if(array[mid]<value){//说明落在了右边
                              max=mid+1;
                          }else{
                                 System.out.println(mid);
                           }//重新计算mid的值
                                 mid=(min+max)/2;
                        }
                   System.out.println(-1);
             }
}

猜你喜欢

转载自www.cnblogs.com/yang-1yang/p/9609801.html
今日推荐