自学Java第四章——《数组》 (6)

使用for

class Exam2{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,6,7,8,9};//数组是有序的
int value = 2;

       int index = -1;
       
       for(int left=0,right=arr.length-1,mid = (left+right)/2; left<=right; mid = (left + right)/2){
            //找到结束
           if(value == arr[mid]){
               index = mid;
               break;
          }//没找到
           else if(value > arr[mid]){//往右继续查找
               //移动左边界,使得mid往右移动
               left = mid + 1;
          }else if(value < arr[mid]){//往左边继续查找
               right = mid - 1;
          }
      }
       

       
       if(index==-1){
  System.out.println(value + "不存在");
}else{
  System.out.println(value + "的下标是" + index);
}
       
}
}

 

4.3.6 排序

数组的排序算法有千万种,我们只讲了两种:

1、冒泡排序

2、简单的直接排序

示例代码:冒泡:从小到大,从左到右两两比较

int[] arr = {5,4,6,3,1};
for(int i=1; i<arr.length; i++){//外循环的次数 = 轮数 = 数组的长度-1
   /*
   第1轮,i=1,从左到右两两比较,arr[0]与arr[1]。。。。。arr[3]与arr[4]
   第2轮,i=2,从左到右两两比较,arr[0]与arr[1]。。。。。arr[2]与arr[3]
   ...
  arr[j]与arr[j+1]比较
   找两个关键点:(1)j的起始值:0(2)找j的终止值,依次是3,2,1,0,得出j<arr.length-i
   */
   for(int j=0; j<arr.length-i; j++){
       //两两比较
       //从小到大,说明前面的比后面的大,就交换
       if(arr[j] > arr[j+1]){
           int temp = arr[j];
           arr[j] = arr[j+1];
           arr[j+1] = temp;
      }
  }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjwys.html