java 二分法排序
public class Lookup {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 二分法查找
*/
int a[]={23,45,98,100,110,120,140};
int search=120;//记录要查找的元素
int lower=0;//记录第一个元素
int temp=a.length-1 ;
int index=-1;
while(lower<=temp){
index = (lower+temp)/2;//记录中间元素,用两边之和除2.
int currentValue=a[index];
if(currentValue==search){//如果得到的数与要查找的数相等则break退出;
break;
}else if(currentValue<search){//如果得到的数要小于查找的数、就用下标加1;否则减一
lower=index+1;
}else{
temp = index-1;
}
}
if(lower<=temp){
System.out.println(search+"在数组中第:"+(index+1)+"位");
}else{
System.out.println("里面没有这个元素");
}
}
}
二分法查找的适用条件
说”二分查找法只适用于顺序存储的有序表“是正确的,说”指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)“是为了程序的确定性。
实际上只要有序就可以。
按递减排序也可以用二分法。
只是必须把算法规则改变一下。
递增的算法:拿要查找数值与中间序号的数值比较若相等,查找成功;要查找数值比中间序号的数值大,在右边查找,低端序号改为原中间序号加1;要查找数值比中间序号的数值小,在左边查找,高端序号改为原中间序号减1;如此反复。
递减的算法:拿要查找数值与中间序号的数值比较若相等,查找成功;要查找数值比中间序号的数值大,在左边查找,高端序号改为原中间序号减1;要查找数值比中间序号的数值小,在右边查找,低端序号改为原中间序号加1;如此反复。
二分法比较次数
a500/2此,因为使用2分查找,所以从中间开始查找,假设从250开始找,首先比较250大于K还是小于K,如果大于则从250往后找至500
如果小于250,则往前找。
所以一分为2,那么最多也就是a500/2次了
二分法插入排序的复杂度分析
二分插入排序是稳定的与二分查找的复杂度相同;
最好的情况是当插入的位置刚好是二分位置 所用时间为O(n);
最坏的情况是当插入的位置不在二分位置 所需比较次数为
n
S<=∑n「log?n「-2^n「log?n「+1
k= 1
平均时间O(n^2)
C语言中二分法和插入排序案例,就两个!只涉及数组与函数内容,主要是别涉及指针!
你好,二分法
#include
#define f(x) (x*x*x-2*x*x+3*x-4)
void main()
{ float a=-10,b=10,c,eps=1e-5;
while ((b-a)>eps)
{ c=(a+b)/2;
if(f(c)==0) break;
else if(f(a)*f(c)<0) b=c;
else a=c;
}
printf("root=%f
",c);
}
插入排序
#include
int main ()
{
int n[10];
int i, j, k;
int temp;
for (i = 0; i <= 9; i++)
{
printf ("请输入第%d个数:", i + 1);
scanf ("%d", &n[i]);
}
printf ("数组排序前效果如下
");
for (i = 0; i <= 9; i++)
{
printf ("%d ", n[i]);
}
printf ("
");
for (i = 1; i <= 9; i++)
{
for (j = i - 1; j >= 0; j--)
{
if (n[j] < n[i])
break;
}
if (j != i - 1)
{
temp = n[i];
for (k = i; k >= j + 1; k--)
n[k] = n[k - 1];
n[j + 1] = temp;
}
}
printf ("数组排序后效果如下
");
for (i = 0; i <= 9; i++)
{
printf ("%d ", n[i]);
}
printf ("
");
return 0;
}二分法插入排序的应用实例?
代码:
#include
void fun(int a[ ],int n)
{
int i,j,k,temp;
for(i=0;i
数脉科技怎么样?昨天看到数脉科技发布了7月优惠,如果你想购买香港服务器,可以看看他家的产品,性价比还是非常高的。数脉科技对香港自营机房的香港服务器进行超低价促销,可选择10M、30M的优质bgp网络。目前商家有优质BGP、CN2、阿里云线路,国内用户用来做站非常不错,目前E3/16GB阿里云CN2线路的套餐有一个立减400元的优惠,有需要的朋友可以看看。点击进入:数脉科技商家官方网站香港特价阿里云...
目前国内云计算市场竞争异常激烈,尤其是国内的腾讯云、阿里云、景安等商家促销活动一波接一波的进行,对于有需要的用户确实得到不小的实惠。但是这样给予国内的主机商确实是比较大的打击,毕竟这些商家的背景和实例强劲,即便是贴本补贴优惠,也是不怕的。前两年阿里一家各种活动促销,确实在国内市场占据主要的市场地位,腾讯云开始两年没有较大的吸引用户,不过这两年的发展还是比较稳健的。我们很多网友在之前肯定也享受到一些...
官方网站:https://www.shuhost.com/公司名:LucidaCloud Limited尊敬的新老客户:艰难的2021年即将结束,年终辞旧迎新之际,我们准备了持续优惠、及首月优惠,为中小企业及个人客户降低IT业务成本。我们将持续努力提供给客户更好的品质与服务,在新的一年期待与您有美好的合作。# 下列价钱首月八折优惠码: 20211280OFF (每客户限用1次) * 自助购买可复制...
二分法排序为你推荐
ico监管为何央行叫停代币发行?flash实例Flash元件和实例的概念及关系?国家法规数据库食品及食用农产品标准法规信息支撑和综合应用平台/食品安全标准与技术法规动态比对数据库如何查询标准shoujiao手机电池突然充不上电,是怎么回事?该怎么办?netbios协议tcp/ip、ipx/spx、netbios这三个通信协议的区别comexceptionapro exception是什么意思防火墙技术应用常用防火墙技术有哪几种泛微协同办公系统泛微软件怎么样?做协同办公的,我要来这做销售前景怎么样?请大家对这个行业或公司了解的给些建议。微盟价格微盟现在怎么样?aviconverter哪款AVI转换器好用?推荐一下
网站空间价格 欧洲免费vps 安云加速器 美元争夺战 中国智能物流骨干网 anylink 腾讯云分析 空间登陆首页 带宽租赁 免费asp空间 中国linux 服务器论坛 lamp怎么读 闪讯网 葫芦机 空间排行榜 restart reboot 香港打折信息 在线tracert 更多