二分法排序二分法插入排序的应用实例?

二分法排序  时间:2021-06-26  阅读:()

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

麻花云-香港CN2云服务器,安徽BGP线路,安徽移动大带宽!全系6折!

一、麻花云官网点击直达麻花云官方网站二、活动方案优惠码:专属优惠码:F1B07B 享受85折优惠。点击访问活动链接最新活动 :五一狂欢 惠战到底 香港云主机 1.9折起香港特价体验云主机CN2 云服务器最新上线KVM架构,,默认40G SSD,+10G自带一个IPv4,免费10Gbps防御,CPU内存带宽价格购买1核1G1M19元首月链接2核2G 2M92元/3个月链接2核4G3M112元/3个月...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

DMIT$10.9/月,日本VPS/三网直连/1核1.5G内存/20GB存储/1Gbps端口

优惠码年付一次性5折优惠码:TYO-Lite-Open-Beta-1y-50OFF永久8折优惠码:TYO-Lite-Open-Beta-Recur-20OFF日本vpsCPU内存SSD流量带宽价格购买1核1.5G20 GB4 TB1Gbps$10.9/月购买2核2 G40 GB6 TB1Gbps$16.9/月购买2核4 G60 GB8 TB1Gbps$21.9/月购买4核4 G80 GB12 TB...

二分法排序为你推荐
ata考试ata考试只要及格就能拿证吗?如果不能,需要拿多少分?南宁虚拟空间南宁自由空间在哪里?4k超高清视频下载为新手推荐几个获取4K片源的途径snake模型什么是S-L头模型?国家法规数据库哪个常用的法律APP比较好用?pat是什么格式pat是什么格式的文件啊shoujiao求【叫兽】的简介gas是什么意思petrol和gas的区别特斯拉model3降价小鹏P7和特斯拉Model 3,买哪个更加划算?gbk内码高考姓名gbk内码查询
域名服务器上存放着internet主机的 n点虚拟主机管理系统 怎么申请域名 directspace bandwagonhost css样式大全 java空间 炎黄盛世 什么是刀片服务器 nerds 服务器硬件防火墙 免费外链相册 阿里云免费邮箱 新加坡空间 ledlamp 服务器硬件配置 聚惠网 删除域名 服务器是什么 德国代理ip 更多