使用Java实现折半查找

本文介绍了一种使用冒泡排序对数组进行排序的方法,并实现了折半查找算法,其平均时间复杂度为O(lgn)。此外还讨论了查找用时与数组元素数量之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折半查找的平均时间复杂度:O(lgn)


实现代码如下:

     

     //使用冒泡对数组进行排序

     public int[] sortArray(int[] arrs){

for(int i=0; i<arrs.length-1;i++){
//定义一个临时变量
int temp = 0;
for(int j=i;j<arrs.length;j++){
if(arrs[i] > arrs[j]){
temp = arrs[j];
arrs[j] = arrs[i];
arrs[i] = temp;
}
}

}

return arrs;
}


     //折半查找算法,x为被查找的值

      public int findFlag(int[] arrs,int x){
int flag = 0;
int length = arrs.length;

while(flag < length){
int i = (flag + length)/2;
if(x == arrs[i]){
return i;
}else if(x < arrs[i]){

                                //如果中间值大于目标值,将flag移到中间值加1位置

length = i;
}else{

                               //如果中间值小于目标值,将length移到中间值位置即可
flag = i + 1;
}
}

return -1;

}


关于查找用时的讨论:

     一般来说,运行时间与数组中元素数目的个数成正比。所以,如果其他相同,对于n个元素的数组,若平均用时T ms,那么,对于n2个元素的数组,平均用时为2T ms。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值