Java数组训练

Java数组训练

1.冒泡排序

public class Demo1 {
	public static void main(String[] args) {
		int[]num = {21,10,54,58,24,33,100};
		int a;
		//冒泡排序
		//外层循环控制执行次数
		//执行次数=length-1
		for(int i=0;i<num.length-1;i++){
			//内层循环控制比较次数
			//比较次数=length-i-1(循环轮数)
			for(int j=0;j<num.length-i-1;j++) {
				//比较交换位置
				if(num[j]>num[j+1]) {
					a = num[j+1];
					num[j+1]=num[j];
					num[j]=a;
				}
			}
		}
		//遍历数组并输出
		for(int index=0;index<num.length;index++) {
			//index: 0 1 2 3 4 
			System.out.println(num[index]);
		}
		System.out.println();
	}
}

2.二分查找

public class Demo2 {
	public static void main(String[] args) {
		//二分法查找
		int[]num = {10,12,14,15,16,18,20};
		//要查找的数
		int a = 20;
		//最小下标范围
		int minindex = 0;
		//最大下标范围
		int maxindex = num.length-1;
		//中间下标范围
		int midindex = (minindex + maxindex)/2;
		int i=0;
		//用while循环
		while(true) {	
			i++;
			//查找值大于中间值,最小下标右移
			if(a>num[midindex]) {
				minindex = midindex+1;
			}
			//查找值小于中间值,最大下标左移
			else if(a<num[midindex]) {
				maxindex = midindex-1;
			}
			//查找值等于中间值退出循环
			else {
				break;
			}
			//找不到输入数据时输出-1
			if(minindex>maxindex) {
				midindex = -1;
				break;
			}
			//当边界发生变化, 需要更新中间下标
			midindex = (maxindex + minindex)/2;
		}
		//循环次数统计
		System.out.println("循环次数:"+i);
		System.out.println(midindex);
	}   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值