java-数组基础+冒泡排序+二分查找

java-数组基础+冒泡排序+二分查找

数组
  • 数组是相同类型的多个数据的容器

  • 这些数据按现行顺序排列

  • 创建数组的格式

  • 常用格式1. 创建数组的同时,指定数组中的内容
    数据类型[] 数组名称 ={数据1,数据2,数据3};

    常用格式2:创建数组,并指定长度,不指定数组中的内容
        数据类型[] 数组名称 = new 数组类型[长度];
        
    不常用的格式1.创建数组,不初始化
        数据类型[] 数组名称;
    	初始化数据时只能使用: 数组名称 = new 数组类型 [长度];
    
    不常使用的格式2.创建数组,并指定数组中的内容
        数据类型[] 数组名称 = new 数据类型[]{内容1,内容2,内容3.....}
    
  • 通过下标操作数组数据

  • 数组遍历

数组常见问题
  • 数组下标越界问题
  • 空指针问题(名称与值之间并没有绑定 或者说 名称指向的值不存在 )
冒泡排序:
  • 外层循环控制轮数
  • 内层循环控制每轮比较的次数

升序排序的口诀:

N个数字来排队,

 两两相比小靠前,

 外层循环 length-1

 内层循环 length-i-1
    public class BubbleSort {
    
    	/**
    	 * 冒泡排序
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		int[] nums = {20,0,50,84,12,35};
    		int temp;
    		
    //		外层循环控制比较的轮数
    		for(int i=0;i<nums.length-1;i++) {
    //			内层循环控制每轮比较的次数
    			for(int j=0;j<nums.length-i-1;j++) {
    				if(nums[j]>nums[j+1]) {
    					temp = nums[j];
    					nums[j] = nums[j+1];
    					nums[j+1] = temp;
    				}
    			}
    			
    		}
    		for(int i =0;i<nums.length;i++) {
    			System.out.print(nums[i]+"  ");
    		}
    	}
    
    }

在这里插入图片描述


二分查找
  • 前提 数据采用 顺序存储 的有序排列
  • 步骤:
    • 确定查找的范围 最大-最小
    • 计算中间下标数据,中间数据较大,则最大下表等于中间下标-1
    • 计算中间下标数据,中间数据较小,则最大下表等于中间下标+1
    • 当最小下标 大于 最大下标时,说明数据不存在
 public class BinarySearch {
    	/**
    	 * 折半查找
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		int[] nums = {5,10,20,30,50,70,100};
    		
    		//要查找的数据
    		int  num =50;	
			//		定义三个关键词
    //		1.最小范围小标
    		int minIndex =0;
    //		2.最大范围下标
    		int maxIndex = nums.length-1;
    //		3.中间数据下标
    		int centerIndex = (minIndex+maxIndex)/2;
    		while(true) {
    			if(nums[centerIndex] > num) {
    				//中间数据大
    				maxIndex = centerIndex -1;
    			}else if(nums[centerIndex]<num ) {
    				//中间数据小
    				minIndex = centerIndex +1;
    			}
    			else {
    //				找到数据
    				break;
    			}
    			if(minIndex > maxIndex) {
    				centerIndex = -1;
    				break;
    			}
    			centerIndex = (minIndex+maxIndex)/2;
    		}
    		System.out.println(num + "所在位置为:"+centerIndex);
    	}
    } 	

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小白小小白小白鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值